gpt4 book ai didi

go - 在 golang 中初始化 C 结构时,结构初始化程序中的值太少

转载 作者:IT王子 更新时间:2023-10-29 01:27:50 25 4
gpt4 key购买 nike

我试过下面的程序,但在编译时它告诉我“结构初始化程序中的值太少”。

package main

/*
#include <stdlib.h>
struct Person {
char *name;
int age;
int height;
int weight;
};
*/
import "C"
import "fmt"

type p C.struct_Person

func 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;
};

它也很好用。

无论如何,我该如何解决?谢谢。

最佳答案

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

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

这是因为一个匿名的 4 字节 padding字段被插入到姓名和年龄之间。

关于go - 在 golang 中初始化 C 结构时,结构初始化程序中的值太少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36195935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com