ポインタがメモリ内の場所を参照しています。実際には、すべてのメモリアドレスは、私が理解する限り、変数型とは独立して同じ型を持っています。異なるタイプのポインタの違いは何ですか?
異なるポインタタイプ(*int
,*string
など)を使用する代わりに、すべてのポインタタイプに1つのタイプ(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まず、重要な点の1つは、すべてのポインタが同じであれば、型情報を失い、言語の効率が低下し安全性が低下することです。 '* int'が' * float'を受け入れることを受け入れる機能を望んでいないか、静的に型付けされた言語の重要な利点の1つを失ってしまいます。 –