過去のレビュー:
- Go 言語チュートリアル – はじめに (1)
- Go 言語チュートリアル – 言語構造 (2)
- Go 言語チュートリアル – 言語構造 (3)
- Go 言語チュートリアル – データ型 (4)
- Go 言語チュートリアル – 言語変数 (5)
- Go 言語チュートリアル – GO 言語定数 (6)
- Go 言語チュートリアル – GO 言語演算子 (7)
- Go 言語チュートリアル – GO 条件とループ ステートメント (8)
- Go 言語チュートリアル – GO 言語関数 (9)
- Go 言語チュートリアル – GO 言語変数のスコープ (10)
記事ディレクトリ
Go言語は配列型のデータ構造を提供します。
配列は、同じ一意の型のデータ項目の番号付きの固定長シーケンスであり、整数、文字列、カスタム型などの任意のプリミティブ型を使用できます。
変数をnumber0、number1、…、number99と宣言するよりも、numbers[0]、numbers[1]…、numbers[99]の形式の配列を使用する方が便利で簡単に拡張できます。
配列要素はインデックス (位置) によって読み取る (または変更する) ことができます。インデックスは 0 から始まり、最初の要素のインデックスは 0、2 番目の要素のインデックスは 1 などとなります。
配列を宣言する
Go 言語の配列宣言では要素の型と要素数を指定する必要があり、その構文形式は次のとおりです。
var 変数名 [SIZE]
上記の変数タイプは 1 次元配列の定義です。たとえば、次の例では、長さが 10、タイプが float32 の配列バランスを定義しています。
var balance [10] float32
配列を初期化する
以下は配列の初期化を示しています。
var balance = [5]float32{
1000.0, 2.0, 3.4, 7.0, 50.0}
リテラルで配列を宣言しながら、配列を素早く初期化することもできます。
balance := [5]float32{
1000.0, 2.0, 3.4, 7.0, 50.0}
配列の長さが不確かな場合は、配列の長さの代わりに ... を使用できます。そうすれば、コンパイラーは要素の数に基づいて独自に配列の長さを推測します。
var balance = [...]float32{
1000.0, 2.0, 3.4, 7.0, 50.0}
また
balance := [...]float32{
1000.0, 2.0, 3.4, 7.0, 50.0}
配列の長さが設定されている場合は、添え字を指定して要素を初期化することもできます。
// 将索引为 1 和 3 的元素初始化
balance := [5]float32{
1:2.0,3:7.0}
初期化配列の {} 内の要素の数は、[] 内の要素の数を超えることはできません。
[] 内の数値が無視され、配列のサイズが設定されていない場合、Go 言語は要素の数に応じて配列のサイズを設定します。
balance[4] = 50.0
上記の例では、5 番目の要素を読み取ります。配列要素はインデックス (位置) によって読み取る (または変更する) ことができます。インデックスは 0 から始まり、最初の要素のインデックスは 0、2 番目の要素のインデックスは 1 などとなります。
配列要素にアクセスする
配列要素はインデックス(位置)によって読み取ることができます。形式は配列名の後に角括弧を追加し、インデックスの値は角括弧内にあります。例えば:
var salary float32 = balance[9]
上記の例では、配列残高の 10 番目の要素の値を読み取ります。
以下は、配列の完全な操作 (宣言、代入、アクセス) の例を示しています。
例1
パッケージメイン
import "fmt"
func main() {
var n [10]int /* n 是一个长度为 10 的数组 */
var i,j int
/* 为数组 n 初始化元素 */
for i = 0; i < 10; i++ {
n[i] = i + 100 /* 设置元素为 i + 100 */
}
/* 输出每个数组元素的值 */
for j = 0; j < 10; j++ {
fmt.Printf("Element[%d] = %d\n", j, n[j] )
}
}
上記の例の実行結果は次のようになります。
Element[0] = 100
Element[1] = 101
Element[2] = 102
Element[3] = 103
Element[4] = 104
Element[5] = 105
Element[6] = 106
Element[7] = 107
Element[8] = 108
Element[9] = 109
例2
パッケージメイン
import "fmt"
func main() {
var i,j,k int
// 声明数组的同时快速初始化数组
balance := [5]float32{
1000.0, 2.0, 3.4, 7.0, 50.0}
/* 输出数组元素 */ ...
for i = 0; i < 5; i++ {
fmt.Printf("balance[%d] = %f\n", i, balance[i] )
}
balance2 := [...]float32{
1000.0, 2.0, 3.4, 7.0, 50.0}
/* 输出每个数组元素的值 */
for j = 0; j < 5; j++ {
fmt.Printf("balance2[%d] = %f\n", j, balance2[j] )
}
// 将索引为 1 和 3 的元素初始化
balance3 := [5]float32{
1:2.0,3:7.0}
for k = 0; k < 5; k++ {
fmt.Printf("balance3[%d] = %f\n", k, balance3[k] )
}
}
上記の例の実行結果は次のようになります。
balance[0] = 1000.000000
balance[1] = 2.000000
balance[2] = 3.400000
balance[3] = 7.000000
balance[4] = 50.000000
balance2[0] = 1000.000000
balance2[1] = 2.000000
balance2[2] = 3.400000
balance2[3] = 7.000000
balance2[4] = 50.000000
balance3[0] = 0.000000
balance3[1] = 2.000000
balance3[2] = 0.000000
balance3[3] = 7.000000
balance3[4] = 0.000000