go-common-code/readme/go_howto.md
2025-12-07 19:26:52 +09:00

3.2 KiB
Raw Permalink Blame History

Go言語の書き方

Go言語の基本まとめ

インポートと標準ライブラリ

ファイルの先頭で必要なパッケージを import する。

package main

import (
    "fmt"
    "time"
)

よく使う標準ライブラリ

  • fmt: 文字列表示、フォーマット
  • time: 日付、時間
  • os: 環境変数、ファイル操作
  • strings: 文字列操作
  • net/http: HTTPサーバ、クライアント
  • io/ioutil または io: 入出力処理

3. 基本構文

main 関数

package main

import "fmt"

func main() {
    fmt.Println("hello")
}

変数宣言

var a int = 10
b := 20        // 型推論
var s string = "text"

定数

const Pi = 3.14

関数定義

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

返り値を複数返すことも可能

func swap(a string, b string) (string, string) {
    return b, a
}

4. 分岐と繰り返し処理

if文

if x > 10 {
    fmt.Println("big")
} else if x == 10 {
    fmt.Println("equal")
} else {
    fmt.Println("small")
}

switch文

switch n {
case 1:
    fmt.Println("one")
case 2, 3:
    fmt.Println("two or three")
default:
    fmt.Println("other")
}

for文 (Goの唯一のループ構文)

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

条件のみ

for x < 10 {
    x++
}

無限ループ

for {
    fmt.Println("loop")
    break
}

5. 配列、スライス、マップ

配列

固定長

var arr [3]int = [3]int{1, 2, 3}

スライス

可変長配列 (Goではこちらが主に使われる)

nums := []int{1, 2, 3}
nums = append(nums, 4)

マップ (オブジェクトのようなキーと値)

m := map[string]int{
    "apple":  100,
    "banana": 200,
}

v := m["apple"]
m["orange"] = 300

for range

for key, value := range m {
    fmt.Println(key, value)
}

for index, value := range nums {
    fmt.Println(index, value)
}

6. 構造体とオブジェクト (Goはクラスを持たない)

  • Goには「クラス」も「継承」もない
  • 構造体だがメソッドを持てる
  • 「埋め込みEmbedding」という仕組みで 継承に近いこと はできる

構造体 (class の代わり)

type User struct {
    Name string
    Age  int
}

インスタンス化

u := User{Name: "Taro", Age: 20}
fmt.Println(u.Name)

メソッド (構造体に紐づく関数)

func (u User) Greet() string {
    return "Hello " + u.Name
}

呼び出し

msg := u.Greet()
fmt.Println(msg)

ポインタレシーバー (値を変更できる)

func (u *User) AddAge() {
    u.Age++
}

7. インターフェース (GoのOOP的な仕組み)

type Greeter interface {
    Greet() string
}

構造体がメソッドを持てば自然に実装扱いになる

func greeting(g Greeter) {
    fmt.Println(g.Greet())
}

greeting(u)

必要な要素をコンパクトにまとめた完全版です

もし「Webサーバーの基本」「goroutine の書き方」「ディレクトリ構成の例」なども知りたい場合は続けて作成できます。