变长参数 nums …int
格式化:
在命令行输入 gofmt –w program.go 会格式化该源文件的代码然后将格式化后的代码覆盖原始内容(如果不加参数 -w 则只会打印格式化后的结果而不重写文件);gofmt -w *.go 会格式化并重写所有 Go 源文件;gofmt map1 会格式化并重写 map1 目录及其子目录下的所有 Go 源文件。
格式化:gofmt 也可以通过在参数 -r 后面加入用单引号括起来的替换规则实现代码的简单重构,规则的格式:<原始内容> -> <替换内容> 例如 gofmt -r ‘(a) -> a’ -w .go, gofmt -r ‘a[n:len(a)] -> a[n:]’ –w .go,
c1 := make(chan int) 无缓存 放入第一个值就会发生阻塞。
c2 := make(chant int, 1) 有缓存,大小为1.放入第二个值才会阻塞。
一个双向通道可以直接赋值给一个单向通道
命名函数只能在包级别的作用域声明,在函数域声明一个函数需要使用函数字面量/匿名函数
select在多个通道上监听IO操作,即case后面只能是IO操作。如果某个case后面的通道发生了通信,它就有可能执行。如果有多个case可以执行,会随机选择一个执行,其他的不会执行。即所有的case子句都会得到判断,再进行选择。
在执行select语句的时候,运行时系统会自上而下地判断每个case中的发送或接收操作是否可以被立即执行(立即执行:意思是当前Goroutine不会因此操作而被阻塞)
有疑问加站长微信联系(非本文作者)