go 语法

2022年1月11日 作者 张舫

 常量递增赋值

数据类型 注意不支持隐性转换

变量声明

switch 可以写表达式 可以写多个值

循环 START循环 矛点循环 矛点必须在跳转前

数组声明遍历数组

map的使用

字符串变数组 数组变字符串

随机数 , 记得添加rand.Seed(time.Now().UnixNano())要不然一直都是固定的数值

函数 不通过return 返回值

函数外部参数返回值

函数传递长参

函数defer 和追踪 用了这个关键词,调用的函数会放到最后执行

go 方法调用方法

数据类型实例时自动调用的方法

接口

扩展

interface接口类型的方法,可以传递任何数据

接口实现

错误处理

  • panic 用于不可恢复的错误
  • panic 退出前会执行defer指定的内容
  • os.Exit 退出时不会调用defer指定的函数
  • os.Exit 退出时不会输出当前调用栈信息

panic 和 os.Exit 的比较

go 协程机制 , 线程 和 协程, 协程是更轻量的线程

  1. 创建时默认的stack的大小
    1. jdk5以后 java thread stack 默认为1M
    2. Groutine 的 stack 初始化为2K
  2.  和KSE (Kernel Space Entity) 的对应关系
    1. java Thread 是1:1
    2. Groutine是M:N

共享内存并发机制

CSP并发机制

多路选择和超时控制

channel的关闭和广播

协程任务的取消

协程任务关联取消

只允许一次, 单一模式,懒加载

多任务并发,一个任务完成其余停止

所有协程任务完成程序结束