- Goとは
- v1 が最初の安定版(現在はv1.3)
- 公式ドキュメント
% go doc builtin
package main // 0
import "fmt" // Implements formatted I/O. // 1
/* Print something */ // 2
func main(){ // 3
fmt.Printf("Hello, world; or こんにちは世界") // 4
}
-
package mainは実行ファイルに必要
-
mainにfmtを追加。main以外のパッケージはライブラリと呼ばれる。他の言語でいうところのライブラリと同一概念でおk。行末には//で開始されたコメントがある
-
/* */これもコメント
-
- Goではまず最初に
packageがきて、次にimport、そして他のものが続く。Goのプログラムが実行されると、C言語みたいに最初にmain.main()が呼ばれる。
- Goではまず最初に
-
- ここでは、文字列を表示させる、パッケージ
fmtの関数を呼んでいる。文字列は"で囲まれ、非ASCII文字を使うことも出来る。
- ここでは、文字列を表示させる、パッケージ
% go build helloworld.go
% ./helloworld
- Goは
~/goにインストールされていること。$GOROOTはGOROOT=~/goに設定されていること・ - コンパイルしたいGoのソースコードは
~/g/srcに置かれており、$GOPATHはGOPATH=~/gに設定されていること。この変数はパッケージを使う場面(第三章)で使用されます。
;セミコロンは不要。2個以上の式を一行に記述する場合はセミコロンで区切る必要あり。
Goの変数は変数名の後に型がくる。 int a ではなく a intが正しい。
変数が宣言されると、型にふさわしい空の値が格納される。var a intは0が格納され、var a stringでは空文字列''が格納される。
Goでの宣言と代入は2段階に分かれているが、1つにすることもできる。
var a int
var b bool
a = 15
b - false
a := 15
b := false
:= を使って代入すれば、宣言しなくても自動的に型の類推が行われる。
15は整数値int、falseは真偽値と判定される。
複数の変数を宣言する場合は丸カッコ(パーレン)を使う。
変数以外にも、定数やimportでも複数使用可能。
var (
x int
b bool
)
型が同じ場合は、一行で同時に代入可能
a, b := 20, 16 // a=20; b=16;
変数名がアンダースコア_は特殊な変数で、どんな値が代入されても無視される。
次の例では、34は無視され、35だけ代入される
_, b := 34, 35 // b=35
Goでは未使用の変数が存在すると、コンパイル時にエラーが発生する。
package main func main() {
var i int
}
Boolean(真偽値)
Boolean型は予約済み定数のtrue, falseを表します。
bool のみ存在します。
Numeral(数値)
intは実行環境によって長さが変わります。(uintも同様です) 32bit環境では32bit、64bit環境では64bitの長さになります。
int8, int16, int32, int64, byte, uint8, uint16, uint32, uint64
byteはuint8のエイリアスです。
浮動小数点にはfloat32, float64があるが、floatという型は存在しない。
int系、float系は64bit環境では必ず64bitになり、32bit環境では必ず32bitになる。
注意点として、これらの型は全て、全然別のものなので、 代入時にこれらの型を組み合わせると、下記のようにコンパイルエラーが発生します。
package main
func main() {
var a int // 通常のintger型
var b int32 // 32bit integer型
a = 15
b = a + a // 型違反となってしまう
b = b + 5 // 5は定数なので大丈夫
}
これだと7行目でエラーが発生してしまう。
types.go:7: cannot use a + a (type int) as type int32 in assignment
代入する数値は8進数、16進数、指数表記でも可能です。
077, 0xFF, 1e3, 6.022e23 これらは全て有効な数値です。