Goの型変換
明示的な変換、型エイリアス、定義済み型
「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フィードバックを取得できます。ローカル設定は不要です。