指針引用內存中的位置。據我瞭解,實際上所有的內存地址都是獨立於變量類型的。不同類型的指針有什麼區別?
而不是使用不同的指針類型(*int
,*string
等..),這是可能的只有一種類型(var p pointer
)的所有指針類型?
不同的指針類型有什麼區別?
package main
import "fmt"
func main() {
i := 5
s := "abc"
var pi *int // alternatively var pi pointer
var ps *string // alternatively var ps pointer
pi = &i
ps = &s
fmt.Printf("%p %p", pi, ps) // result is 0x1040e0f8 0x1040a120
}
謝謝你的回覆。但由於缺乏信息,這種解釋對我來說很遙遠。指針指向的是32位或64位int表示的內存。它是否正確 ?。如果這個信息是正確的,爲什麼我們使用與變量類型相關的不同指針類型?如果這個信息不正確,不同的指針類型有什麼區別? –
@AliAltun首先,一個關鍵點是,如果所有的指針都是相同的,那麼你會丟失類型信息,並且使語言效率低下並且不太安全。你不希望接受'* int'的函數接受'* float',否則你失去了靜態類型語言的一個關鍵優勢。 –