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 结构体类型。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值