Go言語基礎 その3 Go言語の基本構文1 (コメント, 型, 変数, 定数, 演算子)

はじめに

前回は Go 言語の概要を書きましたが、今回は Go 言語の文法をまとめておきたいと思います。

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 言語の文法の続きを復習したいと思います。