//不报错
var c chan bool=make(chan bool)
//报错
var a chan bool
a=make(chan bool)
func main(){
go eat(a)
fmt.Println(<-a)
}
func eat(){
fmt.Println("eat")
a<- true
}
3、局部变量
定义在{ }里面的变量时局部变量,只能在{ }里面有效
执行到定义的那句话,开始分配内存空间,离开作用域自动进行释放
4、不同作用域中,同名变量
不同的作用域,允许定义同名的变量
使用变量的原则,就近原则,如果局部变量没有,就去全局变量中找
5、make和new的区别
1、make
make 被用来分配引用类型变量的堆内存,从而初始化该变量,只有slice,map,channel这3种
make还是返回的引用类型变量本身;
引用类型变量,使用var声明后,必须使用make进行初始化,不然没有内存,不能赋值
2、new
new 被用来分配除了引用类型以外的任意类型变量的堆内存:int, string, 数组等
new返回的是指向类型的指针
new把内存置为零
//使用new关键字创建一个数组
func main() {
a := new([5]int)
fmt.Println(a)
}