Golang のフィールド型変換
Golang では変数の型が比較的厳密であり、これが Golang 言語の設計が優れている理由の 1 つです。しかし、実際のプログラミング シナリオでは、異なるタイプの値間の変換が必要な状況に遭遇することがあります。したがって、Golang の型変換を理解することが重要です。
Golang では、型変換とは、変数をある型から別の型に変換することを指します。 Golang で型変換を実行する方法を見てみましょう。
まず、同型変換について見てみましょう。同じ型の値を別の式に変換する必要がある場合、キャストを使用してこれを実現できます。例:
var a int = 65
var b string = string(a)
上記のコードは、変数 a の値を 1 文字の ASCII 値に変換します。変数bに。 Golang では、基本的なデータ型がキャストをサポートしています。ただし、型変換中は、変換前と変換後の変数の実際の型に互換性があることを確認する必要があることに注意してください。
異なる型の値をターゲットの型に変換する必要がある場合は、強制的な型変換を使用する必要があります。 Golang は静的型付け言語であるため、強制的な型変換を実行する場合は、変換された型が変数ストレージの内容と互換性があることを確認する必要があります。そうでないと、例外や予期しない結果が発生します。例:
var a float32 = 3.14
var b int = int(a)
上記のコードでは、浮動小数点型変数 a を整数型に変換し、 b. 結果を整変数に代入します。浮動小数点型は整数型に比べて精度が高いため、浮動小数点型を変換するとデータ損失が発生する可能性があるため注意が必要です。
注意が必要なデータ型変換もいくつかあります。たとえば、文字列から整数型へのデフォルトの変換は Golang ではサポートされていないため、文字列型の数値を整数型に変換する場合は strconv パッケージを使用する必要があります。例:
import "strconv"
func main() {
str := "1234"
num, _ := strconv.Atoi(str)
fmt .Printf("Type: %T, Value: %d", num, num)
}
上記のコードでは、strconv パッケージの Atoi メソッドを使用して文字列を変換する必要があります。 typenumber 整数型の場合。
strconv パッケージに加えて、JSON、protobuf、およびデータのシリアル化と逆シリアル化に特化して使用されるその他のライブラリもあり、異なるデータ型間の変換を実現できます。
Golang は厳密に型指定された言語ですが、場合によっては、異なる型間で共通のインターフェースを確立する必要があります。このとき、インターフェイスの型変換を使用できます。例:
type MyInterface インターフェース {
Method1()
Method2()
}
type MyStruct struct {
name string
}
func (m *MyStruct) Method1() {
fmt.Println("Method1 が呼び出されました")
}
func (m *MyStruct) Method2() {
fmt .Println("メソッド 2 が呼び出されました")
}
func main() {
var i MyInterface
i = &MyStruct{"MyStruct"}
m := i.(* MyStruct )
fmt.Printf("Value: %#v", m)
}
上記のコードでは、2 つのメソッドを定義する MyInterface インターフェイスを定義します。次に、MyInterface インターフェイスを実装する構造体 MyStruct が定義され、インターフェイス型変数 i が main 関数での代入に使用されます。最後に、インターフェイス型変換を使用してインターフェイス型変数 i を MyStruct 型に変換し、変数 m の値を出力します。
インターフェイス型変換を実行するときは、ソース型がターゲット インターフェイスのすべてのメソッドを実装していることを確認する必要があることに注意してください。そうしないと、実行時例外が発生します。
概要
型変換は Golang プログラミングにおける重要なトピックであり、異なるデータ型を変換する必要がある場合にデータ型変換を迅速かつ正確に完了するのに役立ちます。ただし、データ型変換を行う場合は、変換前後の型の互換性を確保しておかないと予期せぬ結果が生じる場合がありますので注意してください。
以上がgolang フィールド型変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。