これはこの質問のフォローアップです。私は真実ではないかもしれないと仮定したので、私はそれについて明示的に尋ねています. これが実際に可能かどうかを尋ねるのを忘れていたので、これについては既にissue #8114を提出しました。
cgo を使用すると、次のように Go コードを C 型で動作させることができます。
package foo
//#include <sys/stat.h>
import "C"
func fileSizeFromStat(stat *C.struct_stat) int64 {
return int64(stat.st_size)
}
逆は可能ですか?つまり、go 型で動作する C 関数を作成していますか? これの具体的なポイントは、上記のリンクの質問で概説されています。ユニオンまたはビットフィールドを使用するか、アラインメントによって Go コードと互換性がなくなるため、Go コードからアクセスできない C 構造体をマーシャリングしたいと考えています。