Goインターフェースから構造体への変換方法は?

Go言語では、型アサーションによってインターフェイスを実装したオブジェクトを、そのインターフェイスに対応した構造体に変換できます。具体的には、次のステップに従います。

  1. まず, 下記のように, インタフェースと構造体を定義します:
type MyInterface interface {
    GetData() string
}

type MyStruct struct {
    Data string
}

func (s *MyStruct) GetData() string {
    return s.Data
}
  1. インターフェースを実装したオブジェクトを作成し、そのオブジェクトを変数に代入する(例えば、)
var myInterface MyInterface = &MyStruct{Data: "Hello, World!"}
  1. インターフェイスを構造体に変換するには、型アサーションを使用できます。構文は次のとおりです:
myStruct, ok := myInterface.(*MyStruct)

型変換は、変換された構造体オブジェクトと、ブール値を返します。ブール値が true の場合、型変換は成功し、変換された構造体オブジェクトを安全に使用できます。ブール値が false の場合、型変換は失敗しています。

完全なサンプルコードは以下のとおりです:

package main

import "fmt"

type MyInterface interface {
    GetData() string
}

type MyStruct struct {
    Data string
}

func (s *MyStruct) GetData() string {
    return s.Data
}

func main() {
    var myInterface MyInterface = &MyStruct{Data: "Hello, World!"}
    myStruct, ok := myInterface.(*MyStruct)
    if ok {
        fmt.Println("转换成功")
        fmt.Println(myStruct.GetData())
    } else {
        fmt.Println("转换失败")
    }
}

このコードを実行すると、次の出力が表示されます。

转换成功
Hello, World!

構造体にインターフェースを上手いこと変換できた

bannerAds