草庐IT

go - 如何使用来自不同包的相同 C 类型?

我正在尝试使用cairo绑定(bind)(Go包),它定义了一个包含C类型和C函数的包装器结构,但无法使其工作。cairo包定义了一个上下文:packagecairo...typeContextstruct{Ptr*C.cairo_t}...然后,我想从主包中使用它的指针:packagemain...cr:=cairo.Create(surf.Surface)layout:=C.pango_cairo_create_layout(cr.Ptr)...C.pango_cairo_create_layout接受*C.cairo_t,这是cr.Ptr应该的。但是,go编译器不同意:./mai

go - 从包的 godoc 引用不同的包

有人可以让我知道是否可以从包的godoc引用不同的包吗?例如,假设我有一个包src/logger/。在src/logger/doc.go中,我需要引用src/config/。类似于javadoc中的@see。有推荐的方法吗?我正在使用Go1.7。 最佳答案 我不知道这是目前可能的。例如。https://golang.org/pkg/io/ioutil/#TempFile简单地使用*os.File引用os包。在https://golang.org/src/io/ioutil/tempfile.go#L40查看源代码注释.andwrit

google-app-engine - 在用 golang 编写的 Google App Engine 应用程序中使用和测试本地包的好方法?

我在测试我的GAEgolang应用程序使用本地包时遇到问题。该项目看起来像这样。.├──app.yaml├──main.go└──handler└──handler.gohandler包在main.go中导入。packagemainimport"handler"在我开始编写测试之前,一切(例如,goappserve)都工作正常。goapptest提示找不到handler包。好像是GOPATHgoappserve和goapptest是不同的。我发现的一种解决方案是handler包在项目路径外并完全导入限定名称(例如,github.com/.../handler),但对我来说没有意义将项目

go - 如何从Go中的字符串方法名称调用另一个包的方法

假设我有两个类似的包-a-ba有一些这样的方法funcTestOne(){//something}funcTestTwo(){//something}我需要从包b调用包a的方法,但只能通过字符串方法名称。就像我得到字符串“TestOne”并调用方法TestOne()一样。我怎样才能完成。编辑:我已阅读有关reflect的内容。但是reflect需要一个结构并且函数是该结构的成员。如果我的函数不是结构的成员怎么办?只是包中的普通方法。并且调用方法和被调用方法在不同的包中。然后呢?注意。可能还有一些方法也有参数。 最佳答案 正如Ligh

c - 当我通过 Cgo 导入 2 个使用 C 包的不同包时,Go 编译返回体系结构 x86_64 错误的重复符号

这是我的代码:packagemainimport(kusb"github.com/karalabe/usb"tusb"github.com/trezor/trezord-go/usb")funcmain(){kusb.Enumerate(0,0)tusb.InitHIDAPI(nil)}当我编译时(我使用gomod来管理包),它返回这个错误:duplicatesymbol_libusb_dev_mem_allocin:/var/folders/fm/1rln65d94mn45s0h5l78tdyh0000gp/T/go-link-624554542/000002.o/var/folde

go - 包含许多文件的 golang 包的内部组织

我有一个要分发的Go库。它有62个源文件,但我想将API放在一个包中。有没有一种方法可以在一个包中使用多个目录来存放代码?这不是一个很大的源代码,因为源文件本身很小,如果可以使其可导航。由于它是以其他语言的类似库为蓝本,它目前有两个包:/project和/project/models。在学习了更多关于Go打包的知识之后,我现在意识到这对于分发和使用来说是笨拙的。用户更喜欢单个包。是否有一种“gopheric”方式来做到这一点? 最佳答案 阅读这两篇文章以更好地理解最佳实践:GoInProductionOrganizingGocode

macos - `go get` 因某些 go 包的权限被拒绝而失败

安装一些go包失败并出现permissiondenied错误,例如:$gogetcode.google.com/p/go.tools/cmd/covergoinstallcode.google.com/p/go.tools/cmd/cover:open/usr/local/go/pkg/tool/darwin_amd64/cover:permissiondenied当我尝试使用sudo修复权限问题时,它因$GOPATHnotset错误而失败:$sudogogetcode.google.com/p/go.tools/cmd/coverPassword:packagecode.google

math - Go 数学包的结果无效

我刚刚在我的电脑上运行了这段代码:packagemainimport("fmt""math")funcmain(){constali=4e20fmt.Println(math.Sin(ali))}得到了这个结果:1.3471173831553043e+258为什么Sin结果大于1?Python和其他一些语言有正确的结果 最佳答案 这似乎只是实现的问题,如果输入超过2**49就会导致问题。发现一个真的老问题here 关于math-Go数学包的结果无效,我们在StackOverflow上找到

go - 覆盖外部包的 cgo 编译器和链接器标志?

假设我想使用一些很棒的go包。我可以通过以下方式包含它:import"github.com/really-awesome/project/foobar"在该项目的foobar.go文件中,它定义了一些cgo指令,例如:#cgowindowsCFLAGS:-IC:/some-path/Include#cgowindowsLDFLAGS:-LC:/some-path/Lib-lfoobar但是如果我在其他地方安装了foobarC依赖项,我真的需要这些行来说明:#cgowindowsCFLAGS:-IC:/different-path/Include#cgowindowsLDFLAGS:-L

go - 我怎样才能有一个用于多个包的通用测试套件?

当我编写一个接口(interface)时,在与接口(interface)相同的包中定义我的测试通常很方便,然后定义多个实现接口(interface)集的包,例如。package/package/impl/x有没有一种简单的方法可以在子包中运行相同的测试套件(在本例中,位于package/*_test.go)?到目前为止我想到的最好的解决方案是添加一个测试包:package/tests/它实现了测试套件,并在每个实现中运行测试,但这有两个缺点:1)package/tests中的测试不在_test.go文件中,最终成为实际库的一部分,由godoc等2)package/tests中的测试由自