ホームページ >バックエンド開発 >Golang >Go でマップ アドレスにアクセスするにはポインターが必要ですか?

Go でマップ アドレスにアクセスするにはポインターが必要ですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-16 16:02:03954ブラウズ

Do I Need Pointers to Access Map Addresses in Go?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。