草庐IT

go - 从其他包导入的结构未定义

这是我的菜鸟问题。我的models/model.go中有这个结构packagemodelsimport("time""gopkg.in/mgo.v2/bson")typeHorsestruct{Idbson.ObjectId`bson:"_id,omitempty"`TitlestringDescriptionstringCreatedOntime.TimeCreatorstringVisitsintScoreint}在我的controllers/crud.go中,我尝试使用Horse结构packagecontrollersimport("html/template""log""net

go - 在开发 golang 库时,我们是否应该始终将自己的包放在 vendor/folder 中?

最近看了一篇文章http://glide.readthedocs.io/en/latest/vendor/,有一些建议,其中之一是:Libraries(codebaseswithoutamainpackage)shouldnotstoreoutsidepackagesinavendor/folderintheirVCSunlesstheyhaveaspecificreasonandunderstandwhythey'redoingit.我的问题是:根据这个建议,在开发golang库时,我们是否应该始终将自己的包(而不是那些第三方包)放在vendor/文件夹中?

go - 默认情况下是否可能不包含子目录中的 Golang 包?

我正在使用一个golang包,说名字pkgfoo;并且作者明确表示,如果我们想在pkgfoo下使用包subpkg,我需要显式导入subpkg。我不明白背后的原因。我在Golang中导入toppkg是不是自动导入了subpkg?packagemainimport("myownpackage""github.com/usera/pkgfoo""github.com/usera/pkgfoo/subpkg")funcmain(){//Usefunctionsinpkgfoo,andusefunctionsinpkgfoo/subpkg//......http.HandleFunc("/log

unit-testing - Golang - 多个包的有效测试

我想从我的应用程序执行所有测试,现在我用命令来执行:gotest./app/...不幸的是,它需要相当长的时间,尽管单个测试运行得非常快。我认为问题在于go在运行测试之前需要编译每个包(及其依赖项)。我尝试使用-i标志,它有点帮助,但我仍然对测试时间不满意。gotest-i./app/...gotest./app/...您是否知道如何有效地测试多个包。 最佳答案 这就是gotest的本质:它构建了一个特殊的运行时,其中包含要执行的附加代码(这就是它跟踪代码覆盖率的方式)。如果速度不够快,您有两个选择:1)使用bash工具编译包列表(

testing - 为什么 Go 1.6.2 不搜索 vendor/包?

项目的结构是:.├──glide.yaml├──glide.lock├──bin├──pkg├──src└──vendor我正在使用Glide用于依赖管理,GOPATH是我项目根目录的位置(绝对路径解析为上面树中的.。)Glide似乎正确安装了依赖项,但是当尝试使用Go1.6.2运行测试时,我什至在失败之前查看vendor/文件夹也没有看到它:GOPATH=/home/charney/myprojectgotest-i...src/myapp/main.go:36:2:cannotfindpackage"golang.org/x/net/context"inanyof:/usr/loc

http - 扩展golang的http包

我需要扩展http包来实现在状态中包含错误描述的非标准响应,即:400缺少必需的参数而不是标准状态描述的400Badrequest。这是我的实际实现:packagemainimport("fmt""io""io/ioutil""net/http""net/url")typeGatewayHandlerintfuncmain(){varghGatewayHandlerhttp.ListenAndServe(":9000",gh)}func(ghGatewayHandler)ServeHTTP(reshttp.ResponseWriter,req*http.Request){legacyA

git - 强制 godep 在 circle build 中通过 SSH 从 github 中 pull 包

我们在单独的repos中有go包到正在构建的包中。我们已经使用github用户key(https://circleci.com/docs/github-security-ssh-keys/)设置了构建,以便它可以访问包含依赖项的私有(private)存储库。但是,调用godeprestore会导致gitclonehttps://...调用。是否可以使用SSH类型的url强制godep恢复包?或者,是否可以以某种方式使用用户key通过HTTPS启用身份验证?我已经尝试了这里建议的所有内容,但到目前为止没有任何乐趣:https://gist.github.com/shurcooL/6927

go - 如何在其他包中获取标志参数

我在go中编写程序,但在使用包flag获取其他包中的变量形式命令行时遇到问题。flag.Parse()主要问题在配置包,因为我在很多地方多次使用她,所以我想避免将pionter传递给她,我决定创建一个独立的模块。现在我在使用配置获取pathFile标志时遇到问题。我的代码如下所示我用参数运行我的程序program-config=/my/path/config.cfg和主要功能funcmain(){flag.Parse()//somenextoperationbutnotwithconfigurationType//thetypeofconfigurationisuseinotherob

go - 无法将结构类型参数传递给另一个包中的函数

我有两个包:offer.go和parser.go。我有一个类型为structData的变量cart。我想将它作为参数传递给另一个包parser中的函数。但是我无法做到这一点。请查看以下内容:offer.gopackageofferimport"go_tests/Parser"typeDatastruct{IdintQuantityintMrpfloat64Discountfloat64}cart:=make(map[int]Data)//carthassomedatainit//passingittoparserParser.BXATP(offer_id,rule.Descriptio

http - 标准库 http 包默认记录到 stdout,我可以禁用它吗?

在Go中使用内置的http模块时,我注意到http.ListenAndServe()将默认对stdout进行日志记录调用。在我的终端中显示的主要内容是:http:TLShandshakeerrorfromx.x.x.x:x:tls:clientofferedanunsupported,maximumprotocolversionof301.现在我明白了这个错误是什么以及导致它的原因,但事实是,我并不特别在意。如何阻止http包(或ListenAndServe()等)默认记录到stdout?它堵塞了我漂亮的控制台。我95%确定我不是记录消息的人,因为我设置的所有日志都有“信息”、“警告”