次の簡単なテスト go コードがあります: call_c.go
package main
/*
int getData(int *p, int n )
{
int i;
for(i=0;i<n;i++) {
p[i]=i;
}
return n;
}
*/
import "C"
import "fmt"
func main() {
var a [5]int32
i := C.getData((*C.int)(&a[0]), 5)
fmt.Println(i, a)
}
「go build call_c.go」を使用してプログラムをビルドすると、正常にビルドされます。
しかし、単純に「import fmt」、「import C」の順序を逆にするか、C /* */ ブロック コードと最初の import ステートメントの間に改行を追加すると、「go build call_c.go」コマンドが返されることがわかりました。エラー:
go build call_c.go
37: error: 'getData' undeclared (first use in this function)
そこにいる専門家のホリネズミへの質問:
goでインポートの順序が重要なのはなぜですか?
C ブロックと最初の import ステートメントの間にスペースを追加できないのはなぜですか?
この種のエラーが再び表示された場合、どのようにデバッグするのが最善ですか?