Go 指針 關於指針的有限操作

富士康質檢員張全蛋 2022-01-08 05:40:47 阅读数:461

有限 操作

在前面的文章中,我們已經提到過很多次“指針”了,你應該已經比較熟悉了。不過,我們那時大多指的是指針類型及其對應的指針值,今天我們講的則是更為深入的內容。

讓我們先來複習一下。

type Dog struct {
name string
}
func (dog *Dog) SetName(name string) {
dog.name = name
}

對於基本類型Dog來說,*Dog就是它的指針類型。而對於一個Dog類型,值不為nil的變量dog,取址錶達式&dog的結果就是該變量的值(也就是基本值)的指針值

如果一個方法的接收者是*Dog類型的,那麼該方法就是基本類型Dog的指針方法。 

在這種情况下,這個方法的接收者,實際上就是當前的基本值的指針值。

我們可以通過指針值無縫地訪問到基本值包含的任何字段,以及調用與之關聯的任何方法。這應該就是我們在編寫 Go 程序的過程中,用得最頻繁的“指針”了。 

從傳統意義上說,指針是一個指向某個確切的內存地址的值。這個內存地址可以是任何數據或代碼的起始地址,比如,某個變量、某個字段或某個函數。 

我們剛剛只提到了其中的一種情况,在 Go 語言中還有其他幾樣東西可以代錶“指針”。其中最貼近傳統意義的當屬uintptr類型了。該類型實際上是一個數值類型,也是 Go 語言內建的數據類型之一。 

版权声明:本文为[富士康質檢員張全蛋]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201080540470654.html