我会用cgo封装一个c库作为项目使用的go库。看了文档,好像使用cgo有很多规则。我不知道这是否合法。
LibCtx 和 Client 都是 C 中的结构。将 C 结构放入 golang 结构是否合法?
//DBClientLib.go
type DBClient struct {
Libctx C.LibCtx
LibClient C.Client
}
func (client DBClient) GetEntry(key string) interface{} {
//...
}
最佳答案
是的,这是完全合法的。看看这个简短的例子:
package main
/*
typedef struct Point {
int x , y;
} Point;
*/
import "C"
import "fmt"
type CPoint struct {
Point C.Point
}
func main() {
point := CPoint{Point: C.Point{x: 1, y: 2}}
fmt.Printf("%+v", point)
}
输出
{Point:{x:1 y:2}}
关于在 CGO 中使用 C 结构的 golang 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54101022/