📝

【Go】41歳未経験エンジニア ~Go挑戦記#4~

2022/11/25に公開

基本編 その4 [Array・Slice]

Array

GoでのArray(配列)は、他の言語と同様に「 [配列数] 」を付けて変数の宣言を行います。
Goの配列数は「型」の一部とみなされるので、配列数を動的に変更することは出来ません。

array
package main

imort "fmt"

func main() {
	var num [3]int
	num[0] = 1
	num[1] = 2
	num[2] = 3
	var str = [2]string {"one", "two"}
	str2 := [3]string {"three", "four", "five"}
}

Slice

先ほどArray(配列)の配列数は変更することは出来ません。とお伝えしましたが、Goでは配列数を変更できる配列も用意されています。それが「slice」になります。
個人的な認識ですが、どちらも同じ配列なんですが配列数を決めるて使うのが「Array」と呼ばれてて配列数を動的に決めれるのが「Slice」と」呼ばれてるんだと理解するようにしています。
固定長の配列⇒Array
可変長の配列⇒Slice

sliceには大きく分けて3つの定義方法があります。

  1. var 【変数名】[]【型名】
  2. var 【変数名】[]【型名】= []【型名】 {値1, 値2, 値3}
  3. 【変数名】:= 【配列名】[【配列の最初のインデックス】:【最後のインデックス - 1】]
func main() {
	var slice []int
	
	slice = append(slice, 1) //sliceに「1」を追加
        slice = append(slice, 2) //sliceに「1」を追加
	
	fmt.Println(slice) // 「[1 2]」が出力
}
func main() {
	var slice []int = []int{1, 2}
	// var slice = []int{1, 2}でも可能
	
	fmt.Println(slice) // 「[1 2]」が出力
}
func main() {
	var array [5]int = [5]int{1, 2, 3, 4, 5}
	
	slice []int = array[1:4]
	
	fmt.Println(slice) // 「[2 3 4]」が出力
}

3番目の固定長配列の一部を取り入れるsliceで取り込む配列数の開始番号と最後の番号の設定が理解に落とし込み難いと感じました。「開始番号」の値は取り入れるsliceには含まれないのに「終わり番号」の値は含まれるのは、方程式に覚えるのは出来ますがロジックをもう少し掘り下げて理解する必要があるかと思いました。

もし、参考になるサイトなどありましたら教えていただけると幸いです。

Discussion