1. 这个应该时只有go才会遇到的
func consumer(c chan int) {
hasMore := true
//var p int // 如果这里不定义p,就需要在后面使用 :=
for hasMore { // 这样hasMore也被当成了局部变量,并且为bool型,每次for都会新建一个,默认值为true
if p, hasMore := <- c; hasMore { // 导致循环不能退出
fmt.Printf("%v\n", hasMore)
fmt.Println("B consume", p)
}
}
}
2.
对于结构体对象,如果直接new得到的是指针:
var age2 = new(T2)
age2.age = 3
而如果用 := 得到的是对象引用
age2 := T2{3}