Golang における
() と .() の変換
Golang では、() と .() は 2 つの非常に一般的な型変換です。この記事では、これら 2 つの型変換の使用シナリオ、変換ルール、および関連するサンプルコードを紹介します。
() 変換
Golang では、() 変換は、非インターフェイス型をインターフェイス型に変換するプロセスです。このプロセスは、新しいインターフェイス タイプに値をカプセル化することによって実現されます。 () 変換の構文は次のとおりです。
var i interface{} = somevalue
上記のコードでは、値 somevalue
をインターフェイス型に変換し、変数 i
に格納します。真ん中。このプロセスでは、Golang コンパイラは i
の新しいインターフェイス タイプを作成します。
() 変換は、カスタム型や組み込み型を含むあらゆる型に適用できます。 () 変換を使用すると、非インターフェイス型をインターフェイス型に変換できます。このようにして、インターフェイスのメソッドを使用して、これらのタイプの値を操作できます。
次に、サンプルコードを見てみましょう。 shape
という名前のインターフェイス タイプを定義するとします。このインターフェイスには、形状の面積を計算するための area()
メソッドが含まれています。また、四角形を表す rect
という名前のカスタム タイプも定義します。 () 変換によって rect
型を shape
型に変換し、area()
メソッドを使用して長方形の面積を計算します。 。サンプル コードは次のとおりです。
package main import "fmt" type shape interface { area() float64 } type rect struct { width, height float64 } func (r rect) area() float64 { return r.width * r.height } func main() { r := rect{width: 3, height: 4} s := shape(r) // 将rect类型转换为shape类型 fmt.Println("Area of rectangle:", s.area()) }
上記のコードを実行すると、次の出力が得られます。
Area of rectangle: 12
上記のサンプル コードからわかるように、rect を変換します。 () を使用して、
型の値を shape
型の値に変換し、area()
メソッドを使用して四角形の面積を計算します。
.() 変換
Golang では、.() 変換は、インターフェイス型を非インターフェイス型に変換するプロセスです。このプロセスは、インターフェイス型から値を抽出し、それを新しい非インターフェイス型に変換することによって実行されます。 .() 変換の構文は次のとおりです。
var aType someType = i.(someType)
上記のコードでは、.()
変換を使用して、インターフェイス型 i
を非インターフェイス型に変換します。 -インターフェイス タイプsomeType
。このプロセス中に、Golang はインターフェイス型に格納されている値の実際の型が someType
と一致するかどうかを確認します。一致が成功した場合、Golang はインターフェイス型に格納されている値を抽出し、それを someType
型に変換し、変数 aType
に格納します。一致が失敗した場合、プログラムは実行時にパニックをスローします。
.go() 変換を使用する場合、インターフェイス型に格納されている値の実際の型が、変換先の非インターフェイス型と一致していることを確認する必要があります。一致しない場合、プログラムは実行時にパニックをスローします。 。
次に、サンプルコードを見てみましょう。 shape
という名前のインターフェイス タイプがあるとします。このインターフェイスには、形状の面積を計算する area()
メソッドが含まれています。また、四角形を表す rect
という名前のカスタム タイプも定義します。 .go() 変換を通じて shape
型を rect
型に変換し、長方形の面積を計算できます。サンプル コードは次のとおりです。
package main import "fmt" type shape interface { area() float64 } type rect struct { width, height float64 } func (r rect) area() float64 { return r.width * r.height } func main() { s := shape(rect{width: 3, height: 4}) // 将rect类型转换为shape类型 r := s.(rect) // 将shape类型转换为rect类型 fmt.Println("Area of rectangle:", r.area()) }
上記のコードを実行すると、次の出力が得られます。
Area of rectangle: 12
上記のサンプル コードからわかるように、rect を変換します。 () を使用して、
型の値を shape
型の値に変換し、.go() 変換を使用して rect
型の値に変換し、次に使用しますarea()
メソッドは、この長方形の面積を計算します。
概要
この記事では、Golang の () と .() 変換について、その使用シナリオ、変換ルール、関連するサンプル コードを含めて紹介しました。これらの型変換はどちらも Golang で非常に一般的な型変換であり、Golang 開発者はこれらを深く理解している必要があります。
以上がgolang () と .() の間の変換について話しましょう。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。