GoLand中的指針操做 * 和 &

&和*這多是Go中最使人困惑的事情之一。基本上你須要瞭解3個案例:

&操做符

var str string ="123"
//打印str變量的內存地址
ftm.Println(&str)

獲取變量內存地址,須要把 & 放到變量前面指針

*操做符

myString := "Hi"
fmt.Println(*&myString)  // prints "Hi"

或者code

myStructPointer = &myStruct
// ...
(*myStructPointer).someAttribute = "New Value"
* 在一個類型前面

*操做符是訪問指針變量中指向地址的值。在上面兩段代碼中,&myStruct是獲取myStruct的內存地址,而咱們須要解析內存地址獲取對應值時候須要用到*,因此&*是相對應的。內存

*操做符操做類型時

var str *string /* 聲明string指針類型的變量 */

*放在類型前面時,例如*string,它成爲類型聲明的一部分,所以您能夠說聲明瞭一個string類型指針類型的變量string

因此使人困惑的是,*真正被用於2個獨立的事物。*能夠是操做變量或類型的一部分。class

相關文章
相關標籤/搜索