类型所做的第二件事:在你用类型声明变量时构造对应类型的变量。如:
var i int
或
var p point
但对于slice(片)、map和channel来说他们必须使用make函数创建对应类型的值。
var m = make( map[string]int)
make函数是Go语言支持的两个分配函数中的一个,另一个是new函数。make函数创建了一个指定类型的值,并把该值得指针返回给变量。在大多数地方,Go中的指针与C中的指针使用方法类似。
你可以使用*引用一个指针的值,也可以用&获取值得地址。但是,Go和C的指针也存在差异,这种区别在于Go语言不存在指针计算。在Go语言中,指针存在的意义是让你可以用引用的方式在函数之间传递参数。
如果你有一个类型T,那么*T就是一个指向类型T的指针。
举一个new函数的例子:
var add= new(int)
在这里,new函数创建了一个整型变量并放回了它的地址存放在add中。变量add的类型为*int。
如果你写出如下语句
fmt.Print(add)
那么你将得到这个整型值得地址。那么,为了打印这个整型变量的值,我们需要这样书写打印语句:
fmt.Print(*add)
就像之前提到过的那样,你可以直接使用类型的值而无需给这个类型命名:
var p struct {
x, y int
}
如果你不需要重用这个类型,那么这样做也是可以的。