Go言語は、Google が開発した静的型付けのコンパイル言語です。シンプルな構文とパフォーマンスの高さが特徴的で、並行処理 (Concurrency) をネイティブでサポートしています。以下は、Go 言語のマニュアルとなります。
基本構文
パッケージ (package)
Go では、コードはパッケージ単位で構成されます。
package main // パッケージ名
import "fmt" // 外部パッケージのインポート
func main() { // エントリーポイント
fmt.Println("Hello, World!")
}
変数 (variables)
Go では、変数の型は静的に定義する必要があります。
var x int = 10 // 型と初期値を指定
var y = 20 // 初期値から型推論
z := 30 // 短縮構文 (関数スコープ内のみ)
関数 (functions)
関数は func
キーワードで定義します。
func add(x, y int) int { // 引数と戻り値の型を指定
return x + y
}
制御構文 (control flows)
if
、for
、switch
などの制御構文は、他の C 系言語と似ています。
codeif x > 0 {
// ...
} else if x < 0 {
// ...
} else {
// ...
}
構造体と インターフェース (structs and interfaces)
Go には、クラスのようなオブジェクト指向の概念はありませんが、構造体とインターフェースがあります。
type Person struct { // 構造体の定義
Name string
Age int
}
func (p Person) greet() string { // レシーバー (メソッドのような機能)
return "Hello, I'm " + p.Name
}
type Greeter interface { // インターフェースの定義
greet() string
}
ゴルーチンと チャネル (goroutines and channels)
Go は、ゴルーチン (goroutine) とチャネル (channel) によって並行処理をサポートしています。
ch := make(chan int) // チャネルの作成
go func() { // ゴルーチンの開始
ch <- 42 // チャネルへの送信
}()
value := <-ch // チャネルからの受信
他の言語との比較
C/C++
- C/C++ に似たシンタックスですが、ポインタの概念がありません。
- 手動でメモリ管理をする必要がありません (ガベージコレクタあり)。
- 構造体 (struct) はクラスに似ていますが、継承はサポートされていません。
Java
- 構文は C 系の言語に近いです。
- スタティックリンクによりバイナリファイルが小さく、起動も速くなります。
- 並行処理がゴルーチンとチャネルによってネイティブサポートされています。
Python
- 構文がシンプルで読みやすいです。
- 型推論は限定的で、基本的に静的型付けです。
- パフォーマンスは C/C++ に近いです。
JavaScript
- 構文がシンプルで読みやすい点は似ています。
- 静的型付けであり、型安全性が高いです。
- 並行処理の扱いが異なります。
Go 言語は、シンプルな構文と高いパフォーマンス、並行処理のサポートなどの特徴を持っています。コンパイル型の静的型付け言語として、システムプログラミングやネットワークプログラミングなどの分野で使われています。
コメント