go语言笔记
标识符
一个包中的变量是以小写字母开头的,如果要公开一个标识符,这个标识符以大写字母开头,可以被直接访问。
变量初始化
对于数值类型,零值是0;对于字符串类型,零值是空字符串;对于布尔类型,零值是false;对于指针,零值是nil;对于引用类型来说,所引用的底层数据结构会被初始化成对应的零值,但是被声明为其零值的引用类型的变量,会返回nil作为其值。
defer延迟调用
关键字defer会安排随后的函数调用在函数返回时菜执行,可以保证defer声明的函数一定会被调用,哪怕函数意外崩溃终止。使用defer可以提高代码可读性,减少错误。
可变参数
func (r *Runner) Add(tasks ...func(int)) {
r.tasks = append(r.tasks, tasks...)
}
// 调用
r := runner.New()
r.Add(createTask(), createTask(), createTask())
Select关键字
带 default 分支的 select 语句可以用来尝试向通道发送或者接收数据,而不会阻塞。
// gotInterrupt verifies if the interrupt signal has been issued.
func (r *Runner) gotInterrupt() bool {
select {
// Signaled when an interrupt event is sent.
case <-r.interrupt:
// Stop receiving any further signals.
signal.Stop(r.interrupt)
return true
// Continue running as normal.
default:
return false
}
}
网友评论