小编shi*_*pei的帖子

如何在Go中配置二进制名称而不更改路径

我正在用Go开发一个小工具.最近,我注意到需要从shell脚本调用该工具,因为它使用的是shell函数.

假设我的工具被调用atool.所以,go build生成一个二进制文件atool,我的工具有一个Go结构github.com/myaccount/atool.现在,我想构建atool-cli二进制文件go build,并从shell脚本调用它atool.我怎样才能做到这一点?

我想到的唯一方法是改变结构github.com/myaccuont/atool-cli.但我不想这样做,因为已经宣布了,而且,路径似乎有点滑稽的名字.

go

7
推荐指数
2
解决办法
4204
查看次数

将C结构转换为Go结构的好方法或推荐方法

我正在使用cgo从Go开发库绑定.让我考虑下面的C结构和Go Struct.

struct cons_t {
  size_t type;
  cons_t *car;
  cons_t *cdr;
};

cons_t* parse(const char *str);
Run Code Online (Sandbox Code Playgroud)

这是结构

type Cons struct {
  type int;
  car *Cons;
  cdr *Cons;
}
Run Code Online (Sandbox Code Playgroud)

为了实现如下的Go功能,有什么更好的方法来实现TranslateCCons2GoCons?

func Parse (str string) *Cons {
  str_ptr := C.CString(string);
  cons_ptr := C.parse(str_ptr);
  retCons := TranslateCCons2GoCons(cons_ptr);
  return retCons;
}
Run Code Online (Sandbox Code Playgroud)

我的第一个答案如下.

/*#cgo
int getType(cons_t *cons) {
    return cons->type;
}
cons_t *getCar(cons_t *cons) {
  return cons->car;
}
cons_t *getCdr(cons_t *cons) {
  return cons->cdr;
}
*/

func TranslateCCons2GoCons (c *C.cons_t) Cons {
  type := C.getType(c); …
Run Code Online (Sandbox Code Playgroud)

go cgo

6
推荐指数
1
解决办法
3423
查看次数

标签 统计

go ×2

cgo ×1