Goの基本構文

パッケージ

GoにはパッケージというRustでいうcrateの機能が存在する。

package calc_math
 
import {
	"math"
}

このpackageが定義したファイルのエイリアスとなる。
例えば上記のcalc_mathimportする場合、

package main
 
import {
	calc_math "アプリ名/mod/プロジェクトルートからのファイルパス"
 
	fibonacci_rest_api "example.com/mod/lib/features/fibonacci_rest_api/entities"
}

となる。

関数

Goでは関数を定義する際にfuncから始める。

func square(i int) (int) {
	return i * i
}

他にも引数が複数あり、その型が同一な場合このように書くこともできる。

func square(x, y int) int {
	return x * y
}

そして関数は複数の値を返すこともできる。

func calc(x, y int) (int, int){
	return x + y, x - y
}

変数宣言

Goでは変数宣言にvarキーワードを使用する。

var i = 32

関数内では:=という変数宣言と代入を同時に記述できる演算子を使用可能。

func main() {
	x := 64
	y := 32
 
	var z = 16 //通常の宣言も使用可能
}

定数宣言

定数宣言にはconstキーワードを使用する。
ただし、宣言する型について制限があり、charstringboolean数値のみである。:=演算子は使用不能。

const HelloWorld = "HELLO WORLD"

条件分岐

if

Goでもifは他の言語と同様な記述法である。

import "fmt"
 
var i = 32
 
if i == 64 {
	fmt.Println("i is 64")
} else {
	fmt.Println("i is not 64")
}

ただ、他の言語と違う点として、評価式の前に簡単な文を入れることが可能。

import "fmt"
 
if i:=64; i == 64 {
	fmt.Println("i is 64")
} else {
	fmt.Println("i is not 64")
}

switch

GoでのswitchCなどとは違ってbreakを書かずともマッチしたcaseのみを実行する。

i := 32
 
switch i {
	case 2:
		return "This is 2"
	case 4: 
		return "This is 4"
	default:
		return "I dont Know"
}

for

Goのforは他の言語とほぼ同様である。

func main(){
	sum := 0
	for i := 0; i < 5; i++ {
		sum += i 
	}
	fmt.Println(sum)
}