Go言語の標準ライブラリは、プログラムを作成する際に一般的に必要となる多くの機能を提供します。これには、基本的なデータ型の操作、ファイル入出力、ネットワーク通信、データのエンコーディングとデコーディング、並行プログラミング、暗号化、データベース操作などが含まれます。
fmtパッケージ
fmtパッケージは、文字列の書式設定と出力を提供します。PrintfやPrintlnなどの関数を含みます。
package main
import "fmt"
func main() {
name := "Alice"
age := 25
fmt.Printf("名前:%s, 年齢:%d\n", name, age)
}
net/httpパッケージ
net/httpパッケージは、HTTPクライアントとサーバの実装を提供します。Webアプリケーションの作成や、Web APIの呼び出しに使用します。
package main
import (
"fmt"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello, World!")
})
log.Fatal(http.ListenAndServe(":8080", nil))
}
osパッケージ
osパッケージは、オペレーティングシステムとのインタラクションを提供します。これには、ファイル操作、環境変数の取得、コマンドライン引数の取得などが含まれます。
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("data.txt")
if err != nil {
fmt.Println("ファイルを開くのに失敗しました:", err)
return
}
defer file.Close()
// ファイルの読み込みなどの処理
}
encoding/jsonパッケージ
encoding/jsonパッケージは、JSON形式のデータのエンコーディング(Goのデータ構造からJSONに変換)とデコーディング(JSONからGoのデータ構造に変換)を提供します。
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
jsonStr := `{"name":"Alice","age":25}`
var person Person
if err := json.Unmarshal([]byte(jsonStr), &person); err != nil {
fmt.Println("JSONのデコードに失敗しました:", err)
return
}
fmt.Printf("名前:%s, 年齢:%d\n", person.Name, person.Age)
}
io/ioutilパッケージ
io/ioutilパッケージは、ファイルの読み書きや一時ファイルの作成など、便利なI/Oユーティリティを提供します。
package main
import (
"fmt"
"io/ioutil"
)
func main() {
data := []byte("Hello, World!")
if err := ioutil.WriteFile("output.txt", data, 0644); err != nil {
fmt.Println("ファイルの書き込みに失敗しました:", err)
return
}
// ファイルの読み込みなどの処理
}
database/sqlパッケージ
database/sqlパッケージは、データベースとのインタラクションを提供します。データベース接続の管理やSQLクエリの実行などを含みます。
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database")
if err != nil {
fmt.Println("データベースに接続できませんでした:", err)
return
}
defer db.Close()
// SQLクエリの実行などの処理
}
syncパッケージ
syncパッケージは、並行プログラミングのためのプリミティブ(例えば、mutexやWaitGroup)を提供します。
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
wg.Add(2)
go func() {
defer wg.Done()
// ゴルーチン1の処理
}()
go func() {
defer wg.Done()
// ゴルーチン2の処理
}()
wg.Wait()
fmt.Println("並行処理が完了しました")
}
strconvパッケージ
strconvパッケージは、文字列と他のデータ型(例えば、数値)との間の変換を提供します。
package main
import (
"fmt"
"strconv"
)
func main() {
str := "123"
num, err := strconv.Atoi(str)
if err != nil {
fmt.Println("文字列を数値に変換できませんでした:", err)
return
}
fmt.Printf("数値:%d\n", num)
}