PC依存エンジニアのブログ

開発者向けにIT関連の情報をお届けしています。特にバックエンド開発者向けの内容が多めです。たまにフリーランス情報もお届けしています。

Go言語を学んでいく 第1弾:基礎

最近Go言語を使ってますので、その記録をしていきます。
早速じゃんじゃん行きましょう。

対象者

Go言語を学ぶ意思がある
他言語でのプログラミング経験がある方

環境構築

以下で紹介しましたので、そちらを参考にしてください。
iristech.hatenablog.com


簡単な標準出力

いきなりコードから・・・

package main

import (
    "fmt"
)

func main() {
    fmt.Println("Golang is good.")
}


packageやimportあたりは、「Go言語を学んでいく 第6弾:パッケージ」の投稿でしっかり説明します。

ざっくり説明すると
標準出力するためには、"fmt"という部品(パッケージ)が必要ですので、import文で部品を取り込んであげます。
プログラムを起動したら、main関数(func main()の中)を実行してほしいので、package文でmainを指定します。

標準出力させている部分は、

fmt.Println("Golang is good.")


これで実行すると、

Golang is good.

と出力されているはずです。

標準出力の詳しい説明は、後々投稿いたします。

コメントの書き方

コメントは//での行コメントと、/* */でのブロックコメントが使用できます。
JavaC#とかと同じですね。

package main

import (
    "fmt"
)

func main() {
    // This is the output code.
    fmt.Println("Golang is good.")
    /*
    Golang is good.
    Is it output?
    */
}

定数

const文で定義することで、コンパイル時に定数が作成されます。
定義の仕方には数パターンあります。

型を省略することもできますが、その際、型は自動で決定します。

①const <定数名> [型] = 値

package main

import (
    "fmt"
)

const ConstNum1 int32 = 10
const ConstNum2 = 10

func main() {
    fmt.Println(ConstNum1)
    fmt.Println(ConstNum2)
}


また複数の定数をまとめて定義することもできます。

package main

import (
    "fmt"
)

const ConstNum1, ConstNum2 int32 = 1, 2
const ConstNum3, ConstStr1 = 1, "string"

func main() {
    fmt.Println(ConstNum1)
    fmt.Println(ConstNum2)
    fmt.Println(ConstNum3)
    fmt.Println(ConstStr1)
}


②const (列挙)
列挙で定義することもできます。
iotaは列挙内で0,1,2,3...とインクリメントしてくれます。
今回最初の0は必要ないので、無視するようにしています。

package main

import (
    "fmt"
)

const (
    _ = iota
    ConstNum1
    ConstNum2
    ConstNum3
)

func main() {
    fmt.Println(ConstNum1)
    fmt.Println(ConstNum2)
    fmt.Println(ConstNum3)
}


※注意として、定数になるのは数値、文字列、論理値だけです。
また定数を関数で定義することはできません。

const ConstArray = [1, 2, 3] ⇒ NG
const ConstAdd = add(1, 2) ⇒ NG

変数

定数と同じように初期化できますが、プログラム実行時に評価されます。

①var <変数名> [型]

package main

import (
    "fmt"
)

func main() {
    var i int
    fmt.Println(i)
}


複数の変数を一気に定義することもできます。

package main

import (
    "fmt"
)

func main() {
    var i1, i2, i3 int
    fmt.Println(i1, i2, i3)
}


②var <変数名> [型] = <初期値>

package main

import (
    "fmt"
)

func main() {
    var i int = 1
    fmt.Println(i)
}


こちらも複数一気に定義することもできます。

package main

import (
    "fmt"
)

func main() {
    var i1, i2, i3 int = 1, 2, 3
    fmt.Println(i1, i2, i3)
}


③var (列挙)
列挙で一気に定義することができます。

package main

import (
    "fmt"
)

func main() {
    var (
        i1, i2, i3 int = 1, 2, 3
        s1, s2 string = "s1", "s2"
    )
    fmt.Println(i1, i2, i3)
    fmt.Println(s1, s2)
}


④<変数名> := <値>
型の指定を行わず、省略した形の記述方法です。

package main

import (
    "fmt"
)

func main() {
    f := 3.14
    fmt.Println(f)
}

次回

Go言語のステートメントについて学んでいきます。