乐趣区

GoLand中的指针操作 * 和 &

& 和 * 这可能是 Go 中最令人困惑的事情之一。基本上你需要了解 3 个案例:
& 操作符
当你想获得变量的内存地址时,应该把 & 放到变量前面
* 操作符
进入一个包含内存地址的变量并解析它,需要放到变量前面(因此它与 & 运算符相对应)。* 它会指向指针指向的东西,例如 myString。
myString := “Hi”
fmt.Println(*&myString) // prints “Hi”
或更有用的,像

myStructPointer = &myStruct
// …
(*myStructPointer).someAttribute = “New Value”
* 在一个类型前面
当 * 放在类型前面时,例如 *string,它成为类型声明的一部分,因此您可以说“此变量包含指向字符串的指针”。
所以令人困惑的是,* 真正被用于 2 个独立的(尽管是相关的)事物。* 可以是操作员或类型的一部分。

退出移动版