Golang は型強制プログラミング言語です。つまり、変数の代入やパラメーターの受け渡しを実行するときに同じデータ型を使用する必要があります。ただし、あるデータ型を別のデータ型に変換する必要がある状況もあります。これには型キャストが必要です。
この記事では、Golang における型強制の概念、使用法、注意事項について説明します。
型キャストの概念
型キャストとは、あるデータ型の値を別のデータ型の値に変換することです。これは通常、次の状況で発生します:
Golang では、型キャストを使用して、ある基本データ型を別の基本データ型に変換したり、あるカスタム型を別のカスタム型に変換したりできます。
基本的なデータ型変換
Golang では、キャストできる基本的なデータ型がいくつかあります。これらには、整数、浮動小数点、ブール値が含まれます。
ある整数型を別の整数型に変換できます。元のデータ型がターゲット型より大きい場合、切り捨てが発生します。元のデータ型がターゲット型より小さい場合、拡張が発生します。
例:
var a int32 = 100
var b int64
b = int64(a)
fmt.Printf("%T, %v\n " 、 b、 b)
出力結果は次のとおりです:
int64, 100
は、浮動小数点型を別の浮動小数点型に変換します。元のデータ型がターゲットの型と異なる場合、精度が失われます。
例:
var a float32 = 10.5
var b float64
b = float64(a)
fmt.Printf("%T, %v\n "、b、b)
出力結果は次のとおりです:
float64, 10.5
ブール値を変換できますvalue 整数型または文字列型に変換します。 true を 1 に、false を 0 に変換します。
例:
var a bool = true
var b int
b = int(a)
fmt.Printf("%T, %v\n " , b, b)
出力結果は次のとおりです:
int, 1
カスタム型変換
Golang では、カスタム型間の変換明示的に行う必要があります。あるカスタム タイプを別のカスタム タイプに変換する場合は、次の 2 つのメソッドを実装する必要があります。
例:
type Student struct{
Name string Age int
}
func (s Student) tostring() string{
return fmt.Sprintf("Name: %s, Age: %d", s.Name, s.Age)
}
type Teacher struct{
Name string Age int
}
func (t Teacher) tostring() string{
return fmt.Sprintf("Name: %s, Age: %d", t.Name, t.Age)
}
func main() {
s := Student{Name: "小明", Age: 18} t := Teacher(s) // 将Student类型转换为Teacher类型 fmt.Println(t.tostring()) s2 := Student(t) // 将Teacher类型转换为Student类型 fmt.Println(s2.tostring())
}
出力結果は次のとおりです:
名前: Xiao Ming、年齢: 18
名前: 、年齢: 0
注: カスタム タイプを別のタイプに変換する場合は、両方のタイプに同じフィールドとメソッドがあることを確認する必要があります。
型アサーション
型キャストに加えて、Golang はインターフェイス内の値の実際の型を取得するための型アサーションも提供します。 Golang では、インターフェイスは汎用的な型変換メカニズムを提供できるため、非常に重要な概念です。インターフェイスから値を取得する必要がある場合は、型アサーションを使用する必要があります。
例:
var x インターフェース{} = 1
i, ok := x.(int)
fmt.Println(i, ok)
出力結果は次のとおりです:
1 true
インターフェイス値 x に int 型の値が含まれる場合、変数 i にはその値が含まれ、変数 ok は true になります。インターフェイス値 x に int 型の値が含まれていない場合、変数 i にはデフォルト値 0 が含まれ、変数 ok は false になります。
注: アサートできないインターフェイス型の場合、型アサーションはパニックになります。したがって、型アサーションを行う前に、型判定を使用してインターフェイスの実際の型を確認する必要があります。
概要
Golang は、データ型強制のためのシンプルかつ効果的なメカニズムを提供します。いずれの場合も、データ型をキャストするときは、精度の低下や切り捨てが発生する可能性があるため、注意が必要です。カスタム型を別の型に変換する場合は、両方の型に同じフィールドとメソッドがあることを確認し、変換メソッドを明示的に実装する必要があります。型アサーションは、インターフェイスから実際の型を取得するメソッドです。要約すると、適切なデータ型キャストと型アサーションは、Golang プログラマがコードの効率と読みやすさを向上させるのに大いに役立ちます。
以上がGolang の型強制の概念について説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。