为了账号安全,请及时绑定邮箱和手机立即绑定

在 golang 中初始化 C 结构时,结构初始值设定项中的值太少

在 golang 中初始化 C 结构时,结构初始值设定项中的值太少

Go
侃侃无极 2021-12-27 15:58:41
我已经尝试了以下程序,但它在编译时告诉我“结构初始值设定项中的值太少”。package main/*#include <stdlib.h>struct Person {    char *name;    int age;    int height;    int weight;};*/import "C"import "fmt"type p C.struct_Personfunc main() {    person := p{C.CString("Giorgis"), 30, 6, 175}    fmt.Println(person)    fmt.Println(C.GoString(person.name))    fmt.Println(person.age)    fmt.Println(person.height)    fmt.Println(person.weight)}我该如何解决这个有线问题?此外,当我将类型“char*”更改为“char”时,以及初始化程序。它运作良好。struct Person {    char name;    int age;    int height;    int weight;};另外,当我使用struct Person {    char *name;};它也很好用。无论如何,我该如何解决?谢谢。
查看完整描述

1 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

请尝试将字段名称放在您的结构文字中。

person := p{name: C.CString("Giorgis"), age: 30, height: 6, weight: 175}

这是因为在姓名和年龄之间插入了一个匿名的 4 字节填充字段。


查看完整回答
反对 回复 2021-12-27
  • 1 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信