CGO编程--c结构体转go变量

其实很简单,我们看下代码就一目了然:

package main

/*
typedef struct {
	int err;
	int width;
	int height;
} A;
A x = {0, 1, 2};
*/
import "C"
import (
	"fmt"
)

func CStructToGo() {
	var a C.A
	a = C.x

	var err, width, height int
	err = int(a.err)
	width = int(a.width)
	height = int(a.height)
	fmt.Println("error:", err)
	fmt.Println("width:", width)
	fmt.Println("height:", height)
}

func main() {
	CStructToGo()
}

执行结果:

error: 0
width: 1
height: 2
成功: 进程退出代码 0.

C结构体被typedef自定义变量,通过C.var,可以引用c结构体变量,然后将值赋值给go变量,这样就可以在go语言中引用C结构体的变量。当然也可以不用typedef,在Go语言中,我们可以通过 C.struct_xxx 来访问C语言中定义的 struct xxx 结构体类型。

你可能感兴趣的:(Golang,golang学习)