指针
- go语言的指针可以是bool、string、int、float。
- 指针初始化但未赋值,其默认值为
。(这里也就说明了切片就是用了指针) - 函数传入的指针,也就是内存地址,在函数内部修改,也就是在内存地址上修改,修改结果会仍然保存(类似引用)。
- go语言中不支持指针的运算。
一些指针的常规用法:
func main() { //通过定义普通变量获取指针(短声明) x := "1" y := &x //y指向x fmt.Println("x =", x) fmt.Println("&x =", &x) fmt.Println("y(&x) =", y) fmt.Println("*y =", *y) fmt.Println("") /* 输出为: x = 1 &x = 0xc000108240 y(&x) = 0xc000108240 *y = 1 */ //先通过new创建指针并分配好内存,再给指针写入值 ptr := new(string) *ptr = "2" fmt.Println("ptr =", ptr) fmt.Println("*ptr =", *ptr) fmt.Println("") /* 输出为: ptr = 0xc000108270 *ptr = 2 */ //先声明一个指针变量,再从其他指针变量获取内存地址及其指针变量 ptr2 := "3" var ptr3 *string = &ptr2 fmt.Println("&ptr2 =", &ptr2) fmt.Println("ptr3(&ptr2) =", ptr3) fmt.Println("*ptr3 =", *ptr3) /* 输出为: &ptr2 = 0xc000108290 ptr3(&ptr2) = 0xc000108290 *ptr3 = 3 */ //写到这里其实不难看出,指针就是指向一个地址,然后引用这个地址即获取这个地址的存放值。 //如上ptr3,指向了ptr2的地址,所以它本身存放ptr2的地址,只有用了指针指向自己才会通过地址去获取ptr2的值。 }
评论(0)