3.2 KiB
3.2 KiB
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 の書き方」「ディレクトリ構成の例」なども知りたい場合は続けて作成できます。