学習ノート 名前: Dozi0116

プログラムのことか、ゲームのことか、サイト作ったらそっちに移転したい

Go言語の違うところ #3

はじめに

dozi0116.hatenablog.jp

これの続き。

CやPythonをかじったことある人が、『基礎からわかるGo言語』を読んで順番に思ったことを書き連ねていくノート的なやつ

今日は眠いし遅いので短め

ポインタ

Cのポインタを理解していれば全く同じものなのでOK。 ただし、ポインタの演算は安全性を考慮して禁止されている。

package main

import "fmt"

func main() {
    var a, b int = 1, 1

    f(a, &b)

    fmt.Println(a, b); // 1, 3
}

func f(a int, b *int) {
    a += 2
    *b += 2
}

ポインタでメモリだけ先に確保しておきたい場合は、mallockではなく、 new(<type>) を使う。

ゼロ値

変数宣言時に値を入れない場合、Goはゼロ値で自動的に初期化してくれる。(すごく便利)

数値型→0 bool→false string→'' 配列(notスライス)→各要素をゼロ値にしたもの 構造体→各要素をゼロ値にしたもの その他→nil, NULLでもNoneでもない

ラベル

(break|continue)のあとにラベルを指定すると、任意の位置へジャンプできる。

func main() {
    for {
        for i := 0;i < 5;i++ {
            if i == 3 {
                break INNER_BREAK_DEST
            }
        }
    }

INNER_BREAK_DEST:
    // ここに飛べる
}

goto