Go Academy · レッスン

Goの型変換

明示的な変換、型エイリアス、定義済み型

レッスン 4/412 ステップ

「Goの型変換」はCoddyKit上の無料Go Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはGo Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Go Academyコースには全4レッスンが含まれています。

明示的な型変換が必要な理由

Goでは、型の間で暗黙的な変換が行われることはありません。これにより、小さな整数が大きな整数型で暗黙的にオーバーフローしたり、浮動小数点数の精度が失われたりする微妙なバグを防げます。

  • 変換は明示的に記述する必要があります:T(value)
  • コンパイラーがコンパイル時に型の不一致を検出します
  • これにより、Goのコードは予測しやすく安全になります

数値型の変換

変換先の型を関数呼び出しのように指定すると、数値型を相互に変換できます。

package main

func main() {
    var i int = 42
    var f float64 = float64(i)
    var u uint = uint(f)
    _ = u
}

切り捨てのリスク

大きな型から小さな型に変換すると、値が切り捨てられます。エラーは発生しないため、注意が必要です。

package main

func main() {
    big := int64(300)
    small := int8(big) // 300 % 256 = 44 — silent truncation!
    _ = small
}

stringと[]byteの変換

stringと[]byteの間で変換すると、データがコピーされます。

package main

func main() {
    s := "hello"
    b := []byte(s)   // string to byte slice
    b[0] = 'H'
    s2 := string(b)  // byte slice to string
    _ = s2
}

stringと[]rune

Unicodeに対応した文字操作を行うには、[]runeに変換します。

package main

func main() {
    s := "Merhaba"
    runes := []rune(s)
    _ = len(runes) // character count, not byte count
}

strconvパッケージ

文字列と数値の間で変換するには、strconvパッケージを使用します。

import "strconv"

func main() {
    n, err := strconv.Atoi("42")   // string -> int
    s := strconv.Itoa(123)          // int -> string
    _ = n; _ = err; _ = s
}

strconv.ParseFloatとFormatFloat

浮動小数点数を表す文字列は、安全に解析およびフォーマットできます。

import "strconv"

func main() {
    f, err := strconv.ParseFloat("3.14", 64)
    if err != nil { return }
    s := strconv.FormatFloat(f, 'f', 2, 64) // "3.14"
    _ = s
}

型エイリアスと定義済み型の違い

Goでは、型エイリアスと定義済み型を区別します。

  • type Celsius float64 — 新しい定義済み型で、float64との間で明示的な変換が必要です
  • type Celsius = float64 — エイリアスで、float64と相互に使用できます

定義型の例

定義型を使うと、APIの意図が明確になり、異なる型を誤って混在させるのを防げます。

type Celsius float64
type Fahrenheit float64

func CtoF(c Celsius) Fahrenheit {
    return Fahrenheit(c*9/5 + 32)
}

func main() {
    boiling := Celsius(100)
    _ = CtoF(boiling)
}

インターフェースへの変換

どの値でも、その値が満たすインターフェース型に変換できます。元の型に戻すには型アサーションが必要です。

var i interface{} = "hello"
s, ok := i.(string) // type assertion
if ok {
    _ = s // safe to use
}

クイックチェック

Goで文字列をintに変換する関数は何ですか?

まとめ:型変換

Goの型変換に関する重要なポイント:

  • Goでは暗黙的な変換は行われません。T(value)構文を使用します
  • 数値変換では値が切り捨てられる場合があります。リスクを明示的に考慮してください
  • []byte(s)とstring(b)ではデータがコピーされます
  • 文字列と数値を変換するにはstrconv.Atoi/strconv.Itoaを使用します
  • 定義型には明示的な変換が必要ですが、エイリアスには必要ありません

次のコース:if、for、switchによる制御フローです。

無料で開始

AI チューターと学ぶ Go — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
51
レッスン
203

よくある質問

「Goの型変換」レッスンは無料ですか?

はい。「Goの型変換」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Go Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Go Academyコースには全4レッスンが含まれています。

「Goの型変換」で何を学びますか?

明示的な変換、型エイリアス、定義済み型 ブラウザで直接実行するハンズオンコードでGo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Go Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのGo Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「Goの型変換」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このGo Academyレッスンでコードを書いて実行できますか?

はい。すべてのGo Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Goで変数を宣言する
  2. Goの組み込み型
  3. 定数とiota
  4. Goの型変換
← Go Academyに戻る