LoginSignup
1
2

More than 3 years have passed since last update.

Go言語 配列の宣言の時に30秒間つまずいたこと

Last updated at Posted at 2019-05-24

はじめに

記述するGo言語の配列については一部のみです。

配列の宣言方法

角括弧内[]に長さを宣言し、その後ろに型を宣言します。
配列の要素にアクセスするには、配列の変数の後ろに角括弧[]を付けその中に添字を記述します。
※ 添字は[0]から始まります。

package main

import (
    "fmt"
)

func main() {
    var number [3]string
    number[0] = "zero"
    number[1] = "one"
    number[2] = "two"

    fmt.Println(number)        // => [zero one two]
    fmt.Println(len(number))   // => 3
}

配列の宣言時に値を代入

変数に:=で代入できます。上記の宣言の後ろに{}を付け、その中に代入したい値を,で区切り記述します。

package main

import (
    "fmt"
)

func main() {
    number := [3]string{"zero", "one", "two"}

    fmt.Println(number)        // => [zero one two]
    fmt.Println(len(number))   // => 3
}

ここでつまずいた

{}の中の要素を見やすく複数行に分けて記述したいことがあると思います。しかし以下の場合はコンパイルエラーが発生します。

func main() {
    number := [3]string{
        "zero",
        "one",
        "two"
    }

    fmt.Println(number)
    fmt.Println(len(number))
}
// syntax error: unexpected newline, expecting comma or }

原因は{}の要素の最後にも,を付けないといけないからです。

package main

import (
    "fmt"
)

func main() {
    number := [3]string{
        "zero",
        "one",
        "two",    // <= , が必要
    }

    fmt.Println(number)
    fmt.Println(len(number))
}

;の自動挿入

Go言語は多言語によくある文末の;を省略できます。コンパイル時にGoコンパイラによって;を挿入されます。上記のコンパイルエラーはこの自動挿入によって発生しているようです。

package main;

import (
    "fmt"
);

func main() {
    number := [3]string{
        "zero",
        "one",
        "two";    // <= ここに ; が挿入される
    };

    fmt.Println(number);
    fmt.Println(len(number));
};

参考: (https://github.com/tsurubee/golang-study/issues/1)

最後に

参考サイトはスターティングGo言語についてのでした。
買ってみようかなぁ~。
スターティングGo言語

1
2
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
1
2