TL;DR

  • Go の文末の ; は、コンパイラがセミコロン挿入規則に沿って自動で入れるので、開発者は書かない。
  • Go Playground は 1 つの入力欄で複数ファイルを再現でき、Makefile では .PHONY と .DEFAULT_GOAL が便利である。

内容

セミコロン挿入規則

Go も Java などと同じく、各文の終わりに ; が必要である。ただし、Effective Go に書かれたセミコロン挿入規則に沿ってコンパイラが挿入するので、開発者が書くことはない。具体的には、改行の直前のトークンが次のどれかのときに ; が入る。

  • 識別子
  • 事前宣言された型のリテラル
  • break、continue、fallthrough、return、++、--、)、}

Go Playground

Go Playground では、-- filename.go -- という行でファイルを分けられる。-- calc/calc.go -- のように書けば、サブディレクトリも再現できる。

-- go.mod --
module playground
 
go 1.24
 
-- calc/calc.go --
package calc
 
func Add(a int, b int) int {
	return a + b
}
 
-- main.go --
package main
 
import (
	"fmt"
	"playground/calc"
)
 
func main() {
	fmt.Println(calc.Add(1, 2))
}

なお、Playground の時刻は 2009 年 11 月 10 日 23:00:00(UTC)に固定されている。これは Go が最初に発表された日である。

Makefile

.PHONY を使うと、指定したターゲットがファイル名ではないことを明示でき、タスクとして実行できる。また、.DEFAULT_GOAL でデフォルトのターゲットを指定できる。

.DEFAULT_GOAL := build
 
.PHONY: build
 
build:
	go build

キーワード