はじめに
前回は Go 言語の概要を書きましたが、今回は Go 言語の文法をまとめておきたいと思います。
- Go言語基礎 その1 Go言語入門
- Go言語基礎 その2 Go言語の開発環境と go コマンド
- Go言語基礎 その3 Go言語の基本構文1 (コメント, 型, 変数, 定数, 演算子)
- Go言語基礎 その4 Go言語の基本構文2 (関数, init, 制御構文)
- Go言語基礎 その5 Go言語の基本構文3 (配列, interface, slice, map, 型アサーション, Defined type, Type alias)
- Go言語基礎 その6 Go言語の基本構文4 (ポインタ, 構造体, メソッド, タグ, インターフェイス)
- Go言語基礎 その7 Go言語の基本構文5 (可視性, スコープ, goto, defer, panic, recover, goroutine, channel)
Go言語文法
コメント
Go 言語ではコメントは以下のように書けます。
// 行末までコメントになるよ!
/*
複数行
にわたった
コメントは
こんな感じ!
*/
型
- Go 言語は静的型付け言語なので、変数や関数の引数、戻り値などに型を指定する必要がある
- 暗黙な型変換はできず、必ず明示的にキャストが必要
- ただし、型推論があるので必ずしも型を書く必要はない
基本型
- 論理値型
bool
- 数値型(実装非依存)
int8
int16
int32
int64
uint8
uint16
uint32
uint64
- 数値型(実装依存)
int
,uint
,uintptr
- 浮動小数点型
float32
float64
- 複素数型
complex64
complex128
- rune 型
rune
Unicode コードポイントを表す特殊な整数型 (int32
の alias) - byte 型
byte
(uint8
の alias) - 文字列型
string
int
, uint
, uintptr
などの実装依存の型は 32bit のシステム上では 32bits(4byte)、64bit のシステム上では 64bits(8byte)になります。
また、T(v)
と書くことで、互換性のある型同士では型変換ができます。(変数のサンプルコードを参照)
変数
- 基本は
var 変数名 型名 = 初期値
型名は省略可能 - 短縮形として関数内で
:=
を使用する事ができる - 初期値を設定しない場合ゼロ値(数値型は
0
、文字列型は""
、論理値型はfalse
)が設定される
サンプルはこんな感じ
package main
import "fmt"
func main() {
// iint64型の変数 a に初期値10を設定
var a int64 = 10
// この時点では u にはゼロ値 0 が設定されている
var u uint8
u = 10
// string型の変数 s に初期値 Hoge を設定
var s = "Hoge" // 型推論によって string 型になった
// 関数内では := を異様して var を省略できる
f := 123.45
// T(v) で型変換ができる
var i = int64(f)
// 変数をまとめて定義その1
var x, y, z int = 1, 2, 3
// 変数をまとめて定義その2
var (
firstname = "田中"
lastname = "太郎"
)
// 複素数
c := 1.2 + 3.4i
real(c) // 1.2
imag(c) // 3.4
// rune型
var r rune
r = 'あ' // Unicodeのコードポイントが設定される (\u3042)
// 文字列の設定方法
s1 := "文字列"
s2 := `
生文字列リテラル
で複数行
の文字列
`
}
定数
- 定数値には式を含めることも可能
- 定数には論理値、整数、浮動小数点数、複素数、ルーン、文字列のいずれかのみ
- 定数のみの演算はコンパイル時に処理される
const (
X = 1
Y // Y == 1
Z = X + Y // Z == 2
)
const (
N1 = 1 // 型なし(untyped) 整数
N2 = int(2) // 型あり(typed) int型 整数
)
const (
A = iota // A == 0
B // B == 1
C // C == 2
)
演算子
- 数字が大きいほど優先度が高い
+
-
*
/
は整数、浮動小数点、複素数に使用可能- 算術演算子の
+
は文字列にも使用可能 - ほかは整数のみ使用可能
優先度 | 演算子 |
---|---|
5 | * / % << >> & &^ |
4 | + - | ^ |
3 | == != < <= > >= |
2 | && |
1 | || |
参考にした本
おわりに
次回は Go 言語の文法の続きを復習したいと思います。