Go言語入門 5回 (Array,slices,Map)A Tour Of Go

2018年11月8日GolangGo-lang


Notice: Trying to access array offset on value of type bool in /var/www/html/wordpress/wp-content/plugins/internal-link-building-plugin/internal_link_building.php on line 86

Notice: Trying to access array offset on value of type bool in /var/www/html/wordpress/wp-content/plugins/internal-link-building-plugin/internal_link_building.php on line 105

これまでのGolangに関する記事
Go言語入門 0回 (Golangの特徴)
Go言語環境構築メモ
Go言語入門 1回 (パッケージ編)A Tour Of Go
Go言語入門 2回 (関数,変数編)A Tour Of Go
Go言語入門 3回 (for文などの基本記述編)A Tour Of Go
Go言語入門 4回 (ポインター編)A Tour Of Go

配列 Array

go言語でも他の言語と同様に、配列を扱うことができます。

package main

import "fmt"

func main() {
    var a [2]string
    a[0] = "Hello"
    a[1] = "World"
    fmt.Println(a[0], a[1])
    fmt.Println(a)

    primes := [6]int{2, 3, 5, 7, 11, 13}
    fmt.Println(primes)
}

出力結果

Hello World
[Hello World]
[2 3 5 7 11 13]

a[0]がhelloという文字列が入っているので、helloが出力,a[1]がworldという文字列が入っているので、worldが出力されます。fmt.Println でaの配列に入っている全てが表示されます。

Slices

配列は固定長です。一方で、スライスは可変長です。より柔軟な配列と見なすこともできます。 実際には、スライスは配列よりもより一般的です。
コロンで区切られた二つのインデックス low と high の境界を指定することによってスライスが形成されます:

a[low : high]
これは最初の要素を含む half-open レンジを選択しますが、最後の要素は省かれます。

次の式は a の要素の内 1 から 3 を含むスライスを作ります。

package main

import "fmt"

func main() {
    primes := [6]int{2, 3, 5, 7, 11, 13}

    var s []int = primes[1:4]
    fmt.Println(s)
}

上のコードでは、配列のprimes[1]からprimes[3]までの値を出力されます。

package main

import "fmt"

func main() {
    s := []int{2, 3, 5, 7, 11, 13}
    printSlice(s)

    // Slice the slice to give it zero length.
    s = s[:0]
    printSlice(s)

    // Extend its length.
    s = s[:4]
    printSlice(s)

    // Drop its first two values.
    s = s[2:]
    printSlice(s)
}

func printSlice(s []int) {
    fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s)

スライスでは、長さと容量の両方を持っています。
長さが要素の数、容量がスライスの最初の要素から数えて、元となる配列の要素数

Maps

map はキーと値とを関連付けます(マップします)

package main

import "fmt"

type Vertex struct {
    Lat, Long float64
}

var m map[string]Vertex

func main() {
    m = make(map[string]Vertex)
    m["Bell Labs"] = Vertex{
        40.68433, -74.39967,
    }
    fmt.Println(m["Bell Labs"])
}

変数mのBell Labs というキーのLat,Longをそれぞれ 40.68433と-74.39967にしているので、それぞれの値が出力されるようになります.