Go でマップ アドレスにアクセスする方法
Go でマップを操作する場合、アドレスに直接アクセスする必要がある場合があります。 。ポインターを使用してこれを実現しようとすることもできますが、Go ではマップは参照型であるため、これは必要ないことを理解することが重要です。
マップへのポインターが不要な理由
Go のマップは値ではなく参照によって渡されます。これは、マップを変数に割り当てるとき、実際には元のマップのエイリアスを作成していることを意味します。いずれかの変数を通じて行われた変更は、基になるマップに反映されます。
コード例
次のコード スニペットを考えてみましょう。
package main import "fmt" func main() { valueToSomeType := map[uint8]int{1: 10, 2: 20} nameToSomeType := map[string]string{"John": "Doe", "Jane": "Smith"} fmt.Println("Original valueToSomeType:", valueToSomeType) fmt.Println("Original nameToSomeType:", nameToSomeType) // No need for pointers, as maps are passed by reference. modifyMap(valueToSomeType, nameToSomeType) } func modifyMap(val map[uint8]int, name map[string]string) { val[3] = 30 name["John"] = "Johnson" }
Inこのコードでは、マップへのアクセスにポインターは使用されません。ただし、参照の性質により、関数 modifyMap は依然としてマップを正常に変更します。
Output
Original valueToSomeType: map[uint8]int{1:10, 2:20} Original nameToSomeType: map[string]string{John:Doe Jane:Smith} Modified valueToSomeType: map[uint8]int{1:10, 2:20, 3:30} Modified nameToSomeType: map[string]string{John:Johnson Jane:Smith}
ご覧のとおり、元のマップは、ポインタの使用。
以上がGo でマップ アドレスにアクセスするにはポインターが必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。