より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

読書感想「Goの基本的な文法を素早く理解したい人向けの本」

Goの基本的な文法を素早く理解したい人向けの本

タイトル通り、基本的な文法を手軽に把握したい人向けの本です。

エディタもGo Playgroundで十分です。

play.golang.org

f:id:rimever:20210612171519p:plain
バッククォートで囲むとraw文字列

配列の追加

append(配列変数、追加したい値...)

package main

import (
    "fmt"
)

func main() {
    var a []string
    b := []int{999, 888}

    fmt.Println(a)
    fmt.Println(b[1])

    a = append(a, "hoge", "fuga")
    fmt.Println(a[1])
    b = append(b, 777, 666, 555)
    fmt.Println(b)
}

runeリテラル

文字を一文字ずつ扱う時はシングルクォーテーションで囲みます。

package main

import (
    "fmt"
)

func main() {
    var a = 'あ'
    fmt.Println(a)
}

C#もそうですね。二文字入れるとコンパイルエラーです。

f:id:rimever:20210612172503p:plain

switch

switch文はswiftと一緒でswitchとcaseは同じインデントなんですね。

func main() {
    var a int = 0
    switch {
    case a == 0:
        fmt.Println("hoge")
    case a == 1:
        fmt.Println("fuga")
    default:
        fmt.Println("piyo")
    }
}

goroutine

goroutineの説明としては以下のコードは良いと思いましたね。

package main

import (
    "fmt"
    "time"
)

func printNo() {
    for i := 0; i <= 3; i++ {
        fmt.Println(i)
        time.Sleep(1 * time.Second)
    }
}

func main() {
    fmt.Println("main start")
    fmt.Println("call function normally")
    printNo()

    fmt.Println("call function as goroutine")
    go printNo()

    time.Sleep(2 * time.Second)

    fmt.Println("main end")
}

f:id:rimever:20210612180126p:plain
go( routine)で呼び出した時は、処理の終了を待たないため、3と表示せずにプログラムが終了している