- 指针基础
// Golang中的指针:
// 不能进行指针运算
// 不能得到一个常量的指针
// 指针的一个高级应用是可以传递一个变量的引用
func TestPointer1(t *testing.T) {
// x == *&x
var x = 123
var xPointer *int = &x // int 类型指针
fmt.Printf("%d\t%p\t%p\t%d\n", x, &x, xPointer, *xPointer)
fmt.Println(x == *(&x))
}
- new 关键字
func TestPointer2(t *testing.T) {
var a *int // nil
a = new(int) // 使用 new 分配一块 int 类型大小的内存
// 返回一个 int 类型指针
*a = 1024
fmt.Println(*a)
}
- new 与 make
- make 也是用于
内存分配
的,(区别于new) - make 只用于
slice
、map
以及chan
的内存创建,而且它返回的类型就是这三个类型本身,而不是他们的指针类型
- 因为
这三种类型就是引用类型
,所以就没有必要返回他们的指针了
- 因为