Newer
Older
01_hello / collection / array.go
yhornisse on 24 Sep 2021 831 bytes rename dir
package main

import "fmt"

func main() {
	var a[3]int // 要素の値を省略したらゼロ値
	fmt.Printf("a: %+v\n", a) // [0, 0, 0]
	b := [3]int{1, 2, 3}
	fmt.Printf("b: %+v\n", b) // [1, 2, 3]
	c := [3]int{1, 2}
	fmt.Printf("c: %+v\n", c) // [1, 2, 0]
	d := [3]int{2: 2}
	fmt.Printf("d: %+v\n", d) // [0, 0, 2]
	e := [3]int{0:1, 1: 2}
	fmt.Printf("e: %+v\n", e) // [1, 2, 0]

	// 要素が比較可能であればその配列型も比較可能
	fmt.Printf("a==b: %v\n", a == b) // false
	fmt.Printf("c==e: %v\n", c == e) // true
	// f := [4]int{}
	// fmt.Printf("a==f: %v\n", a == f) // compile error: [3]int == [4]int

	hoge(a)
	fmt.Printf("a: %+v\n", a) // [0, 0, 0]
	// 値渡しなので安全だが性能的に非効率なことがある
}

func hoge(arg [3]int) { 
	arg[0] = 4
	fmt.Printf("%+v\n", arg) // [4, 0, 0]
}