草庐IT

go - 如何知道我们可以使用 go 包的功能?

我正在学习go语言并在一些网络资源的帮助下编写我的第一个go程序:packagemainimport("fmt""crypto/sha512""encoding/base64")funcmain(){ba:=[]byte("HelloWorld")hasher:=sha512.New()hasher.Write(ba)sha:=base64.StdEncoding.EncodeToString(hasher.Sum(nil))fmt.Printf(sha)}它按预期编译和工作,但我无法自己编写此代码,因为如果我查看sha256的Go包引用,我没有看到Write()和Sum()方法。在哪

go - 如何获取导入包的路径

我在尝试获取导入包的路径时遇到困难。当我在导入的包中打印os.Getwd()的结果时,它显示的路径与main包中的路径相同。这就是我所做的。项目结构lib/lib.gopackagelibimport"os"import"fmt"funcinit(){dir,_:=os.Getwd()fmt.Println("lib.init():",dir)}funcGetPath(){dir,_:=os.Getwd()fmt.Println("lib.GetPath():",dir)}main.gopackagemainimport"os"import"fmt"import"test-import

go - 在 Go 中创建包的工作流程

我知道Go中的程序是从main函数作为起点运行的。但我想知道为新包创建函数的工作流程是什么。例如,在python中,当直接调用模块时,我在模块中使用__main__。当模块从另一个文件导入时__main__将被忽略。这在您开发新模块时很有用。if__name__=="__main__":#Runmodulecodehereifmodulecalleddirectly对于Go,我使用带有packagemain的test.go文件以及我的main.go文件来测试我正在创建的包中的函数。//test.gopackagemainimport("newpackage")funcmain(){ne

go - 具有多个子包的 gorilla 多路复用路由中的循环导入问题

这是我的项目结构--mainpackage--|--child_package1--|--child_package2--|--child_package3IhaveallthetheroutesandmethodcallmanagementforAPIcallslistedinmain_packageTherouterHandlerfrommain_package.golookslikethis:funcHandlers(db*sql.DB,customeruploadFilestring)*mux.Router{router:=mux.NewRouter()router.Handl

go install 不创建包的二进制文件,而 go get 能够

我在go1.11.2linux/amd64版本。当包godog使用gogetgithub.com/DATA-DOG/godog/安装,godog可执行文件在$GOPATH/bin/中创建。到目前为止一切正常。我正在创建一个位于$GOPATH/src/的应用程序myApp,在文件夹vendor下添加了godog包。当我尝试从vendor-ed包中创建二进制文件时,在$GOPATH/pkg/linux_amd64/myApp/vendor/github.com/DATA-DOG/中创建了一个存档文件作为godog.a在这种情况下如何创建二进制文件?我不想再次为二进制文件执行goget。

go - 如何使用 `dep` 将带有内部包的 Go 应用程序部署到 Heroku

我正在使用Heroku的Golang构建包来部署具有以下结构的简单Web应用my-app/handler/user.gosession.govendor/github.com/golang.org/main.goGopkg.tomlGopkg.lock在我的主文件中,我导入了我自己的handler包import("fmt""net/http""my-app/handler")由于以下错误,Heroku无法在我的项目上运行goinstall:---->Usinggo1.9.3---->Running:goinstall-v-tagsheroku.---->cannotfindpackag

git - 使用 Go 包的修改分支而不是安装包

我做了一个“goget”来安装github.com/chsc/gogl。显然这似乎把东西放在了C:\Go\src\pkg\github.com\chsc\gogl中。当我导入“github.com/chsc/gogl”时,我可以很好地使用这个包。但假设我想对包进行一些编辑。我如何管理和组织我的项目和代码?我应该把我的gogl副本放在哪里,如何让我的所有项目都使用我的gogl副本,而不是安装在C:\Go\src\pkg\github.com\chsc\gogl下的那个副本? 最佳答案 创建您的github帐户fork你自己的gogl版

Golang,使用子包中主包的结构或函数

我正在尝试编写一个包含多个子项目的go项目。举个简单的例子,项目看起来像这样Main|-packageone|-packageone.one|-packageone.two|-packagetwo从我的主包中,我可以通过导入它们来使用任何子包的任何功能或结构。但我的问题是如何从任何子包访问main的结构或函数。 最佳答案 通过在main中导入“子包”。但不要产生导入周期(在这种情况下重组您的代码)。请注意,Go(几乎*)没有_sub_package的概念:这些都是普通包,目录布局对导入和导出的可用性/可访问性没有影响函数、类型、方法

go - 如何在 golang 中列出包的公共(public)方法

这个问题在这里已经有了答案:Callfunctionswithspecialprefix/suffix(2个答案)关闭5年前。如何在golang中列出包的公共(public)方法?ma​​in.gopackagemainfuncmain(){//listallpublicmethodsinhere}libs/method.gopackagelibsfuncResut1(){fmt.Println("methodResult1")}funcResut2(){fmt.Println("methodResult2")}

go - 在包的 init 函数中初始化变量是否确保 golang 应用程序中的单个实例?

我正在编写布隆过滤器包。在我的包中,我想创建一个X的实例(非导出的),我希望它只作为一个实例存在;无论我的包被导入应用程序多少次。我正在做的一个简单片段是:packagesuperduperbloomfiltervarxXfuncinit(){x=X.New(....)}这是正确的吗? 最佳答案 whichIwanttoexistonlyasasingleinstance;nomatterhowmanytimesmypackageisimportedintoanappThespec说导入的包只初始化一次:Ifapackagehasi