- 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
これらは全て有効な数値です。