&操作符用于取一个值的地址。简单说,就是让一个值变成它的地址。
*和&刚好相反,是让指针变成它内存内的值。
var a int = 33
b := &a //b 是一个指向a内存地址的指针, *int类型
fmt.Println(*b) // 33, *b和 a 是同一块内容地址的内容
*符号放在类型前边,表示这个类型的指针类型。比如上述的 b
类型是 *int
,一个整数指针类型。
对于传入函数的参数,有2种情况。
- 在函数内部修改传入参数,对函数外部该参数无影响。因为传入的是一个复制的值。
一般是直接传入字面量
类型。 - 函数内部修改,也修改了函数外部的值。因为传入的是一个指针。
有2种情况,一是传入字面量类型的指针
,二是传入引用类型
。
网友评论