Golangスタディノート-アレイの使用法の概要

配列は、固定長の特定のタイプの要素で構成されるシーケンスです。配列は、0個以上の要素で構成できます。

1.配列を作成するいくつかの方法

  • 配列の長さと指定されたデータの初期化で作成
    arr1 := [10]int {3,6,9,4,5,3,5,7,8,2}
    fmt.Println(arr1)
    // [3 6 9 4 5 3 5 7 8 2]
    fmt.Println(len(arr1))
    // 10
    

     

  • 初期化パラメータの数に応じて作成
    arr2 := [...]int {3,6,9,4,5,3,5,7,8}
    fmt.Println(arr2)
    // [3 6 9 4 5 3 5 7 8]
    fmt.Println(len(arr2))
    // 9

     

  • 指定された長さ0の値で要素の作成を初期化します。最初の値は長さ0の値を指定しますlengthnumber
    arr3 := [...]int{10:2,-1}
    fmt.Println(arr3)
    // [0 0 0 0 0 0 0 0 0 0 2 -1]
    fmt.Println(len(arr3))
    // 12 --> 10个0 + 后续两个数据

     

2.アレイアクセス

配列の各要素には、インデックス添え字を介してアクセスできます。インデックス添え字の範囲は、0から配列の長さから1を引いた位置までです。Go組み込み関数len()を使用して、データの長さを取得できます。

arr4 := [...]int{10: 2,-1}
fmt.Println(arr4[10])
// 2

配列のループアクセス

arr5 := [...]int{10: 2,-1}
for _, v := range arr5 {
	fmt.Printf("%d\n", v)
}

 

3.アレイの使用に関する公式の指示

  • 配列は値です。ある配列を別の配列に割り当てると、すべての要素がコピーされます。 
  • 特に、配列を関数に渡すと、配列へ のポインターではなく、配列のコピー受け取り ます。   
  • 配列のサイズはその型の一部です。型[10]int と [20]int は異なります。  配列のサイズはその型の一部です [10] int型と[20] int型が異なります
  1.   配列は値オブジェクトであり、配列を別の配列に割り当てると、すべての要素がコピーされます。
    arr6 := [...]int{0,0,0}
    arr7 := arr6
    arr7[2] = 2
    fmt.Println(arr6)
    fmt.Println(arr7)
    // arr6 --> [0 0 0]
    // arr7 --> [0 0 2]

     

  2. 配列を関数に渡すと、配列へのポインターではなく、配列のコピーを受け取ります。
    arr8 := [2]int{1,2}
    fmt.Println(arr8)
    swap(arr8)
    fmt.Println(arr8)
    // [1 2]
    // [1 2]
    
    func swap(arr8 [2]int){
    	temp :=  arr8[0]
    	arr8[0] = arr8[1]
    	arr8[1] = temp
    }
     配列を参照渡しする場合は、配列のポインタ型を渡す必要があります
    arr8 := [2]int{1,2}
    fmt.Println(arr8)
    swap(&arr8)
    fmt.Println(arr8)
    
    func swap(arr8 *[2]int){
    	temp :=  arr8[0]
    	arr8[0] = arr8[1]
    	arr8[1] = temp
    }
    // [1 2]
    // [2 1]

     

  3. 配列のサイズはその型の一部です。[10] int型と[20] int型が異なります。
arr9 := [...]int{0,0,0}
arr9 = [...]int{0,0,0,0}  // Cannot use '[...]int{0,0,0,0}' (type [4]int) as type [3]int

配列のサイズ(長さ)が一定でない場合、コンパイラーはタイプが異なることを直接プロンプトします。  

4.詳細な説明

  1. 配列比較の問題。==比較演算子を使用して、2つの配列を直接比較します。2つの配列のすべての要素が等しい場合にのみ、配列は等しくなります。
    arr10 := [3]int{1,1,1}
    arr11 := [3]int{1,1,1}
    fmt.Println(arr10 == arr11)
    // true
    
    arr12 := [3]int{1,1,1}
    arr13 := [...]int{1,1,2}
    fmt.Println(arr12 == arr13)
    // false

     

  2. 配列とスライスの変換
    arr14 := [10]int {3,6,9,4,5,3,5,7,8,2}
    // fmt.Println(append(arr14,10))  会报错,Cannot use 'arr14' (type [10]int) as type []Type
    arr15 := arr14[:5]
    fmt.Println(arr15)
    arr16 := append(arr15,10)
    fmt.Println(arr16)
    // [3 6 9 4 5]
    // [3 6 9 4 5 10]

     

  3. このスタイルは慣用的なGoではありません。代わりにスライスを使用してください。公式には、このスタイルの配列は慣用的ではありません。スライスの使用をお勧めします

  

 

おすすめ

転載: blog.csdn.net/keenw/article/details/113028669