Go言語の特徴(Java・C言語と比較して)
言語の設計思想
Go
- Googleが2009年に開発したシンプルさと生産性を重視する言語
- 「少ない機能で多くのことを実現する」というミニマリズムの思想
- クラウド時代の並行処理を念頭に設計されている
Java
- 1995年登場の「高い汎用性と「一度書けばどこでも実行できる」というクロスプラットフォーム性が特徴
- 高速で安全性が高く、ウェブアプリケーション、業務システム、Androidアプリ開発など、幅広い分野で利用されている
C言語
- 1972年にAT&Tベル研究所で開発された、高速な処理が可能な汎用プログラミング言語
- ハードウェアに近い操作が可能で、OSやドライバ開発に使用される
メモリ管理
Go: 自動ガベージコレクション(GC)搭載。
Java: 自動GC。メモリ管理はJVM任せで開発者の負担は少ない
C: 手動管理(malloc/free)。自由度は高いがメモリリークのリスクあり
並行処理
Go – ゴルーチンとチャネル
go func() {
// 軽量スレッドで並行実行
}()- ゴルーチンという軽量スレッドが言語レベルで組み込まれている
- 数千〜数万のゴルーチンを簡単に起動可能
- チャネルによる安全なデータ共有
型システムと構文
Go – シンプルで実用的
type Person struct {
Name string
Age int
}
func (p Person) Greet() string {
return "Hello, " + p.Name
}- 構造体とインターフェースによる暗黙的な型実装 (型がインターフェースのすべてのメソッドを持っていれば、そのインターフェースを明示的に実装宣言しなくても自動的に実装しているとみなされる仕組み)
- ジェネリクスは2022年から導入。 ※型ごとに別々の関数を書くのではなく、複数のデータ型を扱える1つの関数を書くことができる
- Go言語には、JavaやC++のようなクラスの継承がない。これは意図的な設計である。代わりにコンポジション(構造体の埋め込み)を使うことを推奨している。
(コンポジションを推奨する理由) - シンプル: 継承の複雑さを避けられる
- 柔軟: 必要な機能だけを組み合わせられる
- 疎結合: 部品の独立性が高い
- テストしやすい: 各部品を個別にテストできる
エラー処理
- Go: 戻り値でエラーを返す(例外なし)
result, err := someFunction()
if err != nil {
// エラー処理
}得意な分野
Goが得意な分野
- Webサーバー、APIサーバー
- マイクロサービス
- コマンドラインツール
- クラウドネイティブアプリケーション(Docker、Kubernetesなど)
Javaが得意な分野
- 大規模エンタープライズシステム
- Androidアプリ
- 金融システム
- 長年のエコシステムを活用する開発
Cが得意な分野
- OS、デバイスドライバ
- 組み込みシステム
- パフォーマンスクリティカルな処理
- ハードウェア制御
まとめ
Goは、CのシンプルさとJavaの生産性の良いとこ取りを目指した言語である。Cほどではないものの高速で、Javaほど複雑ではないものの安全性が高い、という「ちょうど良い」バランスを提供している。特にクラウド時代のサーバーサイド開発において、その真価を発揮する。
GitHub CodespacesでのGo環境構築
リポジトリの準備
- GitHubで新しいリポジトリを作成(例:
go-learning) - リポジトリ内で「Code」→「Codespaces」→「Create codespace on main」をクリック
開発コンテナの設定
GitHub CodespacesでのGo環境構築
リポジトリの準備
- GitHubで新しいリポジトリを作成しよう(例:
go-learning) - リポジトリ内で「Code」→「Codespaces」→「Create codespace on main」をクリックする
開発コンテナの設定
Codespaces(VSCODE)が起動したら、.devcontainer/devcontainer.json を作成しよう。
{
"name": "Go Learning Environment",
"image": "mcr.microsoft.com/devcontainers/go:1-1.21-bullseye",
"customizations": {
"vscode": {
"extensions": [
"golang.go"
]
}
},
"postCreateCommand": "go version"
}GitHubにコミット&プッシュ
ターミナルで以下を実行しよう。
# Gitの初期設定(初回のみ)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# ファイルをコミット
git add .
git commit -m "Add devcontainer configuration and gitignore"
git pushGit初期設定:user.nameとuser.emailの設定
ターミナルで以下のように実行しよう。
git config --global user.name "山田太郎"
git config --global user.email "taro@example.com"正しく設定されたか確認しよう。
git config --global user.name
# 出力: 山田太郎
git config --global user.email
# 出力: taro@example.com動作確認
ターミナルで以下を実行しよう。
go version実行例
go version go1.24.5 linux/amd64「Hello World」を表示しよう
/workspaces/go-learning以下にファイルを追加しよう。(ファイル名:main.go)
// main.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}実行しよう
go run main.go実行例
Hello, World!Gitに保存
ターミナルで以下をコピー&ペーストして実行しよう。
# すべてのプロジェクトファイルを追加
git add .
# コミット
git commit -m "Add go project files"
# 確認
git status実行例
nothing to commit, working tree clean
Everything up-to-dateセットアップ完了である!
これで学習が始められる。



コメント