Go言語インタフェース変換の実装方法
Golangでは、インターフェイスタイプの変換はタイプアサーションを使用して達成できます。
型アサーションの構文は次のとおりです。
value, ok := interfaceVar.(Type)
interfaceVar は変換対象のインターフェース変数、Type は変換後の型です。
変換が成功していれば、ok は true になり、value に変換後の値が格納されます。変換が失敗していれば、ok は false になり、value は対象型のゼロ値になります。
インターフェイスタイプ変換の実装方法を示すサンプルコードを以下に示します。
package main
import (
"fmt"
)
type Animal interface {
Sound() string
}
type Dog struct{}
func (d Dog) Sound() string {
return "Woof!"
}
func main() {
var animal Animal = Dog{}
dog, ok := animal.(Dog)
if ok {
fmt.Println("Animal is a Dog")
fmt.Println(dog.Sound())
} else {
fmt.Println("Animal is not a Dog")
}
}
ネイティブな日本語で文を言い換えてください。1つのオプションのみ必要です。
Animal is a Dog
Woof!
上のコードで、Animalはインターフェース型で、Dogはそれを実装する型です。main関数で、Animal型の変数animalが定義され、Dog型のインスタンスに代入されます。
次に、型アサーションを使って、animalをDog型の変数dogに変換します。animalは実際にはDog型であるため、変換は成功し、okの値はtrueになり、dogの値は変換されたDog型のインスタンスになります。
最後に、特定の動作を行うには、dog のメソッドにアクセスします。