インターフェイス スライスへの構造体のスライスの割り当て
構造体のスライス ([]MyStruct) をインターフェイスのスライス ( []インターフェイス{})を使用すると、コンパイル時エラーが発生する可能性があります。これは、構造体とインターフェイスのメモリ表現が異なるためです。
構造体のフィールドはメモリ内に隣接して格納されますが、インターフェイスは 2 つのワードのペアとして格納され、1 つは型情報用、もう 1 つは実際のデータ用です。この違いにより、直接代入ができなくなります。
考えられる解決策:
y := make([]interface{}, len(x)) for i, v := range x { y[i] = v }
type IMyStruct struct { MyStruct } func (i IMyStruct) Interface() interface{} { return i.MyStruct } x := []MyStruct{{5}, {6}} y := []interface{}{IMyStruct{x[0]}, IMyStruct{x[1]}}
var y interface{} y = x // No type conversion required
以上がGo で構造体のスライスをインターフェイスのスライスに割り当てるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。