Goで説明できない互換性のないタイプのため、コンパイルエラーが発生しました。私は"C"
モジュールを使用しています。これは、メッセージ ./main.go:12: cannot use x (type C.int) as type module.C.int in field value
でコンパイルに失敗しGo Cタイプが異なるモジュールから来た場合、なぜ異なるのですか?
package module
import "C"
type T struct {
X C.int
}
とメインプログラム
package main
import (
"fmt"
"sandbox/module"
)
import "C"
func f() *module.T {
var x C.int = 42
return &module.T{X: x}
}
func main() {
fmt.Printf("value: %d", f().X)
}
:最小の例は、以下の2つのファイルで構成されています。
コンパイラは何らかの理由でC.int
がmodule.C.int
と等しくないと考えます。
それはC
モジュールと私はC.int
からプレーンint
に切り替えた場合、それが突然動作するためのコードが2つのモジュールに分散しているという事実とは何かを持っている必要があります。
なぜこのコードはコンパイルされませんか? 1つのモジュールですべてのコードを一括してコンパイルせずにコンパイルするための適切なソリューションは何でしょうか?
私はUbuntu 16.04で最新のGoコンパイラ1.9.2を使用しています。