0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Go言語のArray

Last updated at Posted at 2019-03-02

Goの中でArrayは、型と長さ合わせてArray型になります。
違う長さの場合は == または != で比較するとエラーになります。

GoのArray型の書き方

基本書き方

var 変数名 = [n]型 {値1,...,値n}
例:

var months = [12]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

出力:

[1 2 3 4 5 6 7 8 9 10 11 12]

長さ省略

「...」を利用して長さは省略可能です。
例:

var months = [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}

出力:

[1 2 3 4 5 6 7 8 9 10 11 12]

値指定なし

例:

var arr = [12]int{}

出力:

[0 0 0 0 0 0 0 0 0 0 0 0]

ちなみに、省略すると、長さは0のArrayになります。
例:

var arr = [...]int{}

出力:

[]

一部のみ値指定

例:

var arr = [12]int{8: 9, 11: 12}

出力:

[0 0 0 0 0 0 0 0 9 0 0 12]

indexは0からです。8:9の場合は、9個目の値は9で設定されます。

要素値のアクセス

変数[index]
例:

var arr = [12]int{8: 9, 11: 12}
fmt.Println(arr[8])

出力:

9

要素値の変更

変数[index] = 新しい値
例:

var arr = [12]int{8: 9, 11: 12}
arr[8] = 999
fmt.Println(arr[8])

出力:

999

Arrayのメソッド

長さ:len(変数名)

例:

var array = [12]int{8: 9, 11: 12}  
fmt.Println(len(array))

出力:

12

容量:cap(変数名)

var array = [12]int{8: 9, 11: 12}  
fmt.Println(cap(array))

出力:

12

Array比較

Arrayは同じ型、同じ長さの場合だけ比較できます。

「==」で等しい判断

例:

var arr1 = [12]int{8: 9, 11: 12}
var arr2 = [12]int{8: 9, 11: 12}
fmt.Println(arr1 == arr2)

出力:

true

「!=」で等しくない判断

例:

var arr1 = [12]int{8: 9, 11: 12}
var arr2 = [12]int{8: 90, 11: 120}
fmt.Println(arr1 != arr2)

出力:

true

長さが違う場合は比較できない

例:

var arr1 = [12]int{8: 9, 11: 12}
var arr2 = [24]int{8: 90, 11: 120}
fmt.Println(arr1 == arr2)

出力:

invalid operation: arr1 == arr2 (mismatched types [12]int and [24]int)

二次元Array

例:

var data = [3][2]int{{1, 2}, {11, 22}, {111, 222}}

出力:

[[1 2] [11 22] [111 222]]

ちなみに、一つ目の長さは省略可能です。
例:

var data = [...][2]int{{1, 2}, {11, 22}, {111, 222}}

出力:

[[1 2] [11 22] [111 222]]

操作は一元Arrayと同じ
例:データアクセス

var data = [...][2]int{{1, 2}, {11, 22}, {111, 222}}
fmt.Println(data[1][1])

出力:

22

ポインター定義

Arrayが値引用のため、関数の中で加工したい場合は、ポインターで定義
例1:

arr := [12]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
var p *[12]int = &arr
fmt.Println(p)

出力:

&[1 2 3 4 5 6 7 8 9 10 11 12]

例2:newで定義

p := new([10]int)
p[9] = 10
fmt.Println(p)

出力:

&[0 0 0 0 0 0 0 0 0 10]

以上

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?