Go言語入門講座
Chapter 1: Go言語の紹介
Goは、Googleによって開発されたオープンソースのプログラミング言語で、シンプルで効率的なコードを書くことができます。Goの特徴や利点について説明します。
Chapter 2: 開発環境のセットアップ
Goのインストール方法と開発環境のセットアップについて説明します。Goの公式サイトからダウンロードし、インストールします。
# macOSの場合
brew install go
# Windowsの場合
# Goの公式サイトからインストーラーをダウンロードして実行
Chapter 3: Goプログラムの基本構造
Goプログラムの基本構造を学びます。main
関数とpackage
宣言について説明します。
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Chapter 4: 変数と定数
Goでの変数と定数の宣言方法を学びます。型推論と型指定についても説明します。
package main
import "fmt"
func main() {
var a int = 10
b := 20
const c = 30
fmt.Println(a, b, c)
}
Chapter 5: データ型と型変換
Goの基本的なデータ型と型変換の方法について説明します。
package main
import "fmt"
func main() {
var a int = 10
var b float64 = float64(a)
var c int = int(b)
fmt.Println(a, b, c)
}
Chapter 6: 演算子と式
Goで使用できる演算子と、基本的な式の書き方について説明します。
package main
import "fmt"
func main() {
a, b := 5, 3
fmt.Println(a + b) // 足し算
fmt.Println(a - b) // 引き算
fmt.Println(a * b) // 掛け算
fmt.Println(a / b) // 割り算
}
Chapter 7: 条件分岐
if
文とswitch
文を使用した条件分岐の方法について説明します。
package main
import "fmt"
func main() {
a := 10
if a > 5 {
fmt.Println("aは5より大きい")
} else {
fmt.Println("aは5以下")
}
switch a {
case 10:
fmt.Println("aは10")
default:
fmt.Println("aは10ではない")
}
}
Chapter 8: ループ
for
ループを使用した繰り返し処理について説明します。
package main
import "fmt"
func main() {
for i := 0; i < 5; i++ {
fmt.Println(i)
}
}
Chapter 9: 配列とスライス
Goの配列とスライスの使い方について説明します。
package main
import "fmt"
func main() {
arr := [3]int{1, 2, 3}
slice := []int{4, 5, 6}
fmt.Println(arr)
fmt.Println(slice)
}
Chapter 10: マップ
Goのマップ(連想配列)の使い方について説明します。
package main
import "fmt"
func main() {
m := map[string]int{"apple": 2, "banana": 3}
fmt.Println(m)
fmt.Println(m["apple"])
}
Chapter 11: 関数
Goでの関数の定義と呼び出し方法について説明します。
package main
import "fmt"
func add(x int, y int) int {
return x + y
}
func main() {
result := add(2, 3)
fmt.Println(result)
}
Chapter 12: ポインタ
Goのポインタの概念と使い方について説明します。
package main
import "fmt"
func main() {
a := 10
p := &a
fmt.Println(*p) // ポインタを使って値を取得
}
Chapter 13: 構造体
Goの構造体を使用して、カスタムデータ型を定義する方法について説明します。
package main
import "fmt"
type Person struct {
Name string
Age int
}
func main() {
p := Person{Name: "Taro", Age: 20}
fmt.Println(p)
}
Chapter 14: メソッド
Goのメソッドを使用して、構造体に関連する関数を定義する方法について説明します。
package main
import "fmt"
type Person struct {
Name string
Age int
}
func (p Person) Greet() {
fmt.Printf("Hello, my name is %s\n", p.Name)
}
func main() {
p := Person{Name: "Taro", Age: 20}
p.Greet()
}
Chapter 15: インターフェース
Goのインターフェースを使用して、抽象化を行う方法について説明します。
package main
import "fmt"
type Greeter interface {
Greet()
}
type Person struct {
Name string
}
func (p Person) Greet() {
fmt.Printf("Hello, my name is %s\n", p.Name)
}
func main() {
var g Greeter = Person{Name: "Taro"}
g.Greet()
}
Chapter 16: エラーハンドリング
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)
}
}
Chapter 17: ゴルーチン
Goのゴルーチンを使用して、並行処理を行う方法について説明します。
package main
import (
"fmt"
"time"
)
func say(s string) {
for i := 0; i < 3; i++ {
time.Sleep(100 * time.Millisecond)
fmt.Println(s)
}
}
func main() {
go say("world")
say("hello")
}
Chapter 18: チャネル
Goのチャネルを使用して、ゴルーチン間でデータをやり取りする方法について説明します。
package main
import "fmt"
func main() {
ch := make(chan int)
go func() {
ch <- 42
}()
value := <-ch
fmt.Println(value)
}
Chapter 19: パッケージの作成
Goで独自のパッケージを作成し、他のプログラムで使用する方法について説明します。
// mypackage/mypackage.go
package mypackage
func Add(a, b int) int {
return a + b
}
// main.go
package main
import (
"fmt"
"mypackage"
)
func main() {
result := mypackage.Add(2, 3)
fmt.Println(result)
}
Chapter 20: テストの書き方
Goでテストを作成し、コードの信頼性を確保する方法について説明します。
package main
import "testing"
func Add(a, b int) int {
return a + b
}
func TestAdd(t *testing.T) {
result := Add(2, 3)
expected := 5
if result != expected {
t.Errorf("Add(2, 3) = %d; want %d", result, expected)
}
}
このコースを通じて、Go言語の基本的な概念と機能を学ぶことができます。各章を詳細に説明し、実践的なコード例を提供することで、初心者でもGoのプログラミングに慣れることができるでしょう。