Golang は非常に人気のあるプログラミング言語であり、そのシンプルな構文、高いパフォーマンス、同時実行機能により、Web アプリケーション、ネットワーク プログラミング、その他の分野で広く使用されています。 Goでは変数の値を変更するのがわかりにくいかもしれませんが、この記事ではGoでの値の変更方法を詳しく紹介します。
Golang では、関数パラメーターは値渡しまたは参照渡しできます。値による受け渡しとは、パラメーター値のコピーを関数に送信することを意味します。関数内でパラメーター値を変更しても、関数外の値には影響しません。参照渡しとは、パラメーターを関数へのポインターとして渡すことを指し、関数内のポインターへの変更は関数の外部に反映されます。
サンプル コードは次のとおりです。
package main import "fmt" func main() { var x int = 10 fmt.Println("before call:", x) modifyValue(x) fmt.Println("after call:", x) modifyPointer(&x) fmt.Println("after call:", x) } func modifyValue(x int) { x = x + 1 fmt.Println("in func:", x) } func modifyPointer(x *int) { *x = *x + 1 fmt.Println("in func:", *x) }
このコードは、2 つの関数 modifyValue
と modifyPointer
を定義します。1 つは値の変更用、もう 1 つは変更用です。ポインター。 main
関数では、整数変数 x
を定義して 10 に初期化し、それぞれ modifyValue
と modifyPointer
を呼び出します。
このプログラムを実行すると、出力結果は次のようになります。
before call: 10 in func: 11 after call: 10 in func: 11 after call: 11
出力を観察すると、modifyValue
が呼び出されたときに、パラメータが関数内で変更された場合、関数の外の値は変更されません。modifyPointer
が呼び出されると、関数内ではポインタが指す値が 1 増加し、関数外の値は 1 増加します。それに応じて も 11 になります。これは、値による受け渡しと参照による受け渡しの違いです。
値の受け渡しと参照の受け渡しの違いを理解した後、Golang で値を変更する方法を紹介し始めることができます。
Golang では、インデックスを介して配列とスライスの要素にアクセスでき、インデックスを介して要素の値を変更できます。
サンプル コードは次のとおりです。
package main import "fmt" func main() { var arr [3]int = [3]int{1, 2, 3} fmt.Println("before modify:", arr) arr[1] = 4 fmt.Println("after modify:", arr) var slc []int = []int {1, 2, 3} fmt.Println("before modify:", slc) slc[1] = 4 fmt.Println("after modify:", slc) }
このコードは、長さ 3arr
の整数配列と整数スライス slc
を定義します。配列の 2 番目の要素とスライスを順番に並べます。
このプログラムを実行すると、出力結果は次のようになります。
before modify: [1 2 3] after modify: [1 4 3] before modify: [1 2 3] after modify: [1 4 3]
Golang では、Map はキーと値のペアの構造であり、マッピングできます。キー名で値にアクセスし、値を変更します。
サンプル コードは次のとおりです。
package main import "fmt" func main() { var m map[string]int = map[string]int{"apple": 1, "banana": 2, "orange": 3} fmt.Println("before modify:", m) m["banana"] = 4 fmt.Println("after modify:", m) }
このコードは、文字列から整数へのマップを定義し、キー名を通じてマップ内の値を変更します。
このプログラムを実行すると、出力結果は次のようになります。
before modify: map[apple:1 banana:2 orange:3] after modify: map[apple:1 banana:4 orange:3]
Golang では、構造体はユーザー定義の複合型であり、構造体本体のメンバーと、ドット構文を使用して構造体メンバーの値にアクセスして変更します。
サンプル コードは次のとおりです。
package main import "fmt" type Person struct { Name string Age int } func main() { var p Person = Person{"Tom", 20} fmt.Println("before modify:", p) p.Age = 21 fmt.Println("after modify:", p) }
このコードは、文字列型メンバー Name
と、整数型メンバ Age
を使用し、次に p
という名前の構造体変数を定義して初期値を割り当て、最後に構造体メンバの値を変更します。 このプログラムを実行すると、出力結果は次のようになります:
before modify: {Tom 20} after modify: {Tom 21}
3. まとめ
以上がgolangで値を変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。