メインコンテンツまでスキップ

Go言語の基礎文法

Go言語(Golang)はシンプルで効率的な設計が特徴のプログラミング言語です。その基礎文法について、以下にまとめました。


1. 基本構造

Goプログラムは、パッケージ宣言から始まり、必要なパッケージをインポートします。その後、main関数がエントリーポイントになります。

package main

import "fmt"

func main() {
fmt.Println("Hello, World!")
}
  • package main は、実行可能なプログラムであることを示します。
  • import は、他のパッケージを利用するために使用します。
  • fmt.Println は標準出力に文字列を表示します。

2. 変数と型

変数の宣言

Goでは型を明示的に指定するか、:=を使って暗黙的あんもくてきに型を推論します。

// 明示的な型指定
var a int = 10
var b string = "Hello"

// 型推論
c := 20
d := "World"

データ型

種類
整数int, uintint32, uint64など
浮動ふどう小数点数float32, float643.14
論理値booltrue, false
文字列string"Hello"
配列、スライス[N]T, []T[5]int (配列), []int (スライス)
マップmap[K]Vmap[string]int

3. 制御せいぎょ①構文

if文

if condition {
// 条件が真の場合の処理
} else {
// 条件が偽の場合の処理
}
if x := 10; x > 5 { // 初期化文を含めることが可能
fmt.Println("x is greater than 5")
}

forループ

Goでは唯一のループ構文としてforを使用します。

for i := 0; i < 10; i++ {
fmt.Println(i)
}

// 範囲ループ
nums := []int{1, 2, 3}
for index, value := range nums {
fmt.Printf("Index: %d, Value: %d\n", index, value)
}

switch文

switch day := "Monday"; day {
case "Monday":
fmt.Println("Start of the week")
case "Friday":
fmt.Println("End of the week")
default:
fmt.Println("Midweek")
}

4. 関数

基本的な関数

func add(x int, y int) int {
return x + y
}

result := add(3, 5)
fmt.Println(result)

複数の戻り値

func divide(a int, b int) (int, int) {
return a / b, a % b
}

quotient, remainder := divide(10, 3)
fmt.Println(quotient, remainder)

無名関数

sum := func(a int, b int) int {
return a + b
}
fmt.Println(sum(3, 7))

5. ポインタ

Goではポインタを扱いますが、ポインタ演算はサポートされていません。

var x int = 10
var p *int = &x // ポインタ
fmt.Println(*p) // ポインタを介して値を取得

6. 構造体とメソッド

構造体の定義

type Person struct {
Name string
Age int
}

p := Person{Name: "Alice", Age: 25}
fmt.Println(p.Name, p.Age)

メソッド

func (p Person) Greet() {
fmt.Printf("Hello, my name is %s\n", p.Name)
}

p := Person{Name: "Alice", Age: 25}
p.Greet()

7. エラーerrorハンドリングhandling

Goではエラーを明示的に処理します。

package main

import (
"errors"
"fmt"
)

func divide(a, b int) (int, error) {
if b == 0 {
return 0, errors.New("division by zero")
}
return a / b, nil
}

func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}
}

8. ゴルーチンとチャネル

ゴルーチンgoroutine

軽量なスレッドthreadのようなものです。

go func() {
fmt.Println("This runs concurrently")
}()

チャネル

ゴルーチン間の通信に使用します。

ch := make(chan int)
go func() {
ch <- 42
}()
value := <-ch
fmt.Println(value)

これらがGo言語の基礎文法の概要です。Goは簡潔で効率的なコードを書くための構造を提供していますので、ぜひ実際に試してみてください!