複合型 - Go

最終更新日: 2026-07-25

TOP(About this memo)) > 一覧(Go) > 複合型

set型

配列(Arrays)

Slices

primes := [6]int{2, 3, 5, 7, 11, 13}
var s []int = primes[1:4] 
fmt.Println(s)////[3 5 7] 3 5 7 11 ではないことに注意。

// makeをつかった作成
b := make([]int, 0, 5) // len(b)=0, cap(b)=5、cap値は省略できる。したがって容量上限をなしにできる。

// 最初から容量が分かっているなら下記のようにするのが効率的。
// 長さが容量を超えるとエラーになる。
a := make([]string, 10)
for i, c := range a { c[i] = "test"}

// 個数が分からないときはappendで。
// appendでは、元の配列 が、変数群を追加する際に容量が小さい場合は、より大きいサイズの配列を割り当て直す。
// その場合、戻り値となるスライスは、新しい割当先を示すようになる。
friend1 := []string{"a"}
friend2 := []string{"a", "b"}
friend3 := append(friend1, friend2...)

// sliceからsliceを作成
s = s[1:4]
fmt.Println(s)
s = s[:2]
fmt.Println(s)
s = s[1:]
fmt.Println(s)

// range でfor文
var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}
func main() {
  for i, v := range pow {
    fmt.Printf("2**%d = %d\n", i, v)
  }
}

// 以下は[6]bool{true, false, true, true, false, true}を作ってからそれを参照するスライスを作成している。
r := []bool{true, false, true, true, false, true}
var s []int
fmt.Println(s, len(s), cap(s))///[] 0 0
if s == nil {
    fmt.Println("nil!")///nil!
}
a[0:10]
a[:10]
a[0:]
a[:]

sliceの要素の削除など

map、mapリテラル

m := make(map[string]int)
m["aaa"] = 4
n := map[string]int{"aaa": 3}
n["bbb"] = 4
m := map[int]string{
		1: "value1",
		2: "value2",
		3: "value3",
	}

for key, value := range m {// 順番はランダムになるので注意。
  fmt.Println(key, value)
}

参照型のコピー

(IMO) []Modelと[]*Model