Think Twice
IT技術メモ | Go言語のメモ
Created: 2021-09-24 / Updated: 2023-05-12

Go言語の文法


目次


Goの特徴

特徴

類似の言語

HelloWorld

Copy
package main

import "fmt"

func main() {
    fmt.Println("Hello, World.")
}

パッケージ

パッケージとは

例:同一パッケージのソースファイル

s1.go
Copy
// p1パッケージ
package p1

func fnc1() {
    // 略
}
s2.go
Copy
// p1パッケージ
package p1

func fnc2() {
    fnc1() // 同一パッケージ内の関数を呼び出す
}

インポート

例:インポート

Copy
// 単一のインポート
import "p1"
Copy
// 複数のインポート
import (
    "p2"
    "p3"
    "p4"
)

エクスポート

例:エクスポート

Copy
package p1

// この関数はp1パッケージ以外からは使用できない
func fnc1() {
    // 略
}

// この関数はp1パッケージ以外から使用可能
func Fnc2() {
    // 略
}

変数

変数宣言

初期値指定なし
Copy
var <変数名> <型名>
初期値指定あり
Copy
var <変数名> <型名> = <初期値>
型を省略
Copy
var <変数名> = <初期値>
複数の変数宣言
Copy
var (
    <変数名> <型名>
    <変数名> <型名> = <初期値>
    <変数名> = <初期値>
)

例:変数宣言

Copy
// 単一の変数宣言
var a int
var b int = 1
var c = 0

// 複数の変数宣言
var (
    d int
    e int = 1
    f = 0
)

// 複数代入
var a1, a2 int
var b1, b2 int = 0, 1
var c1, c2 = 0, 1

ローカル変数

ローカル変数宣言
Copy
func xxx() {
    <変数名> := <式>
}

例:ローカル変数

Copy
func main() {
    a := 1
    b, c := 2, 3
    var d int = 4 // varも使用可能
}

定数

型指定を省略
Copy
const <変数名> = <初期値>
値指定あり
Copy
const <変数名> <型名> = <初期値>

型指定の無い定数

aはintにもint64にも代入できる
Copy
const a = 1
var i1 int = a
var i2 int64 = a
bはint64に代入できない
Copy
const b int = 1
var i1 int = b
var i2 int64 = b // コンパイルエラー!

演算子

算術演算子

演算子 説明
+ 加算
- 減算
* 乗算
/ 除算
% 剰余(あまり)
& ビットAND
| ビットOR
^ ビットXOR
&^ ビットAND NOT
<< 左シフト
>> 右シフト

比較演算子

演算子 説明
== 等しい
!= 等しくない
< 未満
<= 以下
> より大きい
>= 以上

論理演算子

2023-05-12 更新
演算子 説明
&& AND
|| OR
! NOT

単項演算子

演算子 説明
++ インクリメント
-- デクリメント
- マイナス
^ ビットNOT
| 論理NOT

演算子の優先順位

優先度 演算子
* / % << >> & &^
+ - | ^
== != < <= > >=
&&
||

基本型と複合型


参考

サンプルソース

参考サイト

参考動画

参考書籍