ホーム プログラミング言語 golang go syntax Go言語での複数の変数の同時代入

Go言語での複数の変数の同時代入


 
 
プログラムするのが最も簡単なアルゴリズムの 1 つは、変数の交換です。変数を交換するための一般的なアルゴリズムでは、変数を一時的に保存するための中間変数が必要です。次のように、従来の方法で変数交換コードを作成します。

 

 var a int = 100
var b int = 200
var t int

t = a
a = b
b = t

fmt.Println(a, b) 

コンピュータが最初に発明されたとき、メモリは非常に「高価」でした。この変数の交換は、多くの場合非常に贅沢です。そこで、コンピューター「大きな牛」は、中間変数の使用を避けるためにいくつかのアルゴリズムを発明しました。

var a int = 100
var b int = 200

a = a ^ b
b = b ^ a
a = a ^ b

fmt.Println(a、b) 

このようなアルゴリズムは多数ありますが、それらのすべてに特定の値の範囲と型の要件があります。

Go 言語に関しては、メモリはもはや希少なリソースではなく、記述方法もより簡単になります。 Go の「複数代入」機能を使用すると、変数交換のタスクを簡単に完了できます。



var a int = 100(変数aに100を代入)
var b int = 200(変数bに200を代入)

b、a = a、b(aとbの値を入れ替える)

fmt.Println(a、b)(aとbの値を出力する) 

多重代入では、変数の左右の値が左から右の順に代入されます。

複数の代入は、Go 言語のエラー処理と関数の戻り値で頻繁に使用されます。たとえば、ソートに Go 言語を使用する場合、swap を使用する必要があります。コードは次のとおりです。

type IntSlice []int

func (p IntSlice) Len() int           { return len(p) } // 要素数を返します
func (p IntSlice) Less(i, j int) bool { return p[i] < p[j] } // i 番目の要素が j 番目の要素より小さければ true を返します
func (p IntSlice) Swap(i, j int)      { p[i], p[j] = p[j], p[i] } // i 番目と j 番目の要素を交換します 

コードの説明は次のとおりです。

  • 1 行目では、IntSlice を []int 型であると宣言しています。
  • 3 行目で、IntSlice 型の Len メソッドを記述し、スライスの長さを指定します。
  • 4 行目では、指定された i および j 要素インデックスに従って要素を取得して比較し、比較結果を返します。
  • 5 行目では、指定された i、j 要素のインデックスに従って、2 つの要素の値を交換します。
 

「 Go言語での複数の変数の同時代入」についてわかりやすく解説!絶対に観るべきベスト2動画

Go言語とは?|プログラミング言語のGo言語について3分でわかりやすく解説します【プログラミング初心者向け】
一緒に学ぶGo言語入門 ~その2:パッケージ・変数・関数(前半)~