草庐IT

go - 探索 GO 包

全部标签

go - 处理 struct 的 `New()` 错误的最佳实践

给定:typeAstruct{}funcNew()*A{return&A{}}处理构建期间发生的错误的基于最佳实践的建议是什么?现实世界的场景是根据一些可能无效的locationstring为特定的time.Location构造一个time.Time.编辑:这不仅仅是“构造函数应该返回错误”。我想讨论替代方案。例如,如果它没有返回错误,也许我们不允许将值传递到可能导致错误的构造函数中。我想考虑不同方法的优点。编辑2:可能的方法:在构造函数中返回一个错误只返回一个有效的结构并且不允许潜在无效的构造函数参数出错时返回一个nil结构实例编辑3:评级标准调用代码行自己的代码行模糊程度

go - 如何将 []*type 传递给函数?

我在Golang中有一个方法需要一个[]*type作为参数。我有一片:s:=make([]myType,3)我该怎么做? 最佳答案 简而言之(正如其他评论者所暗示的那样),听起来您是在询问如何使用Go不支持的功能。即,泛型:具有签名[]*type的函数,其中type实际上不是您已经定义的特定具体类型。虽然这可能在未来得到支持,但现在还不行——你现在只能用[]*specific-concrete-type定义函数。 关于go-如何将[]*type传递给函数?,我们在StackOverflo

go - 如何像 python 一样在 go 中打印 ascii 文本

如何像python一样用go语言打印ascii文本如下图所示使用python使用Go语言 最佳答案 问题是您的文本包含反引号(`),它恰好是golang原始字符串文字的定界符。这种情况类似于你的python代码,你的文本包含3个连续的双引号,这是你的python代码中使用的分隔符。我没有看到任何快速摆脱这种情况的方法而不修改您的ascii文本,因为我们在golang中没有像在python中那样的原始字符串定界符的其他选项。您可能希望将ascii文本存储在文本文件中并从那里读取:import(........"io/ioutil")f

go - GO中这个奇怪的函数声明的原因是什么?

在我见过的大多数Go函数声明中,格式是Name,Arguments,Output。比如下面的:funcadd(a,bint)int{returna+b}但是在这个例子中,指针是在声明的开头给出的,而不是在名称后面的参数部分。我的问题是:这种格式的原因是什么?指针作为参数时是否有不同的写法?func(p*Page)save()error{filename:=p.Title+".txt"returnioutil.WriteFile(filename,p.Body,0600)} 最佳答案 在go中没有您通常看到的类。相反,我们使用有问题的

go - Web 服务器正常关闭未按预期工作

我之前在博客中介绍过如何在Go中创建一个可以正常关闭的网络服务器。https://marcofranssen.nl/go-webserver-with-gracefull-shutdown/#TLDR此解决方案非常有效,但是对于更大的项目,我想进一步构建代码。我按照以下要点重构了这段代码。https://gist.github.com/marcofranssen/699c1aa97c8a33ab20b5eccada275b08由于某些原因,带有srv.ListenAndServe()的行似乎没有被执行,而正常关闭仍然像以前一样在go例程中运行。对我来说,代码看起来完全相同,只是重构为单

go - 如何导入本地包到主包

我尝试重构main.go,将代码分到不同的文件中。所以我将controller.go作为包Controller。但是我无法将这个本地包导入main.go。article├client├api│├main.go│└contoroller│└contoroller.go├nginx└docker-compose.yml・client:react/axios・api:golang/gin・web-server:nginx・db:mysql・container:docker・ci-tool:travis・deploy:awselasticbeanstalk主.gopackagemainimpo

go - 任何人都可以解决这个编程挑战吗?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎与helpcenter中定义的范围内的编程无关。.关闭8年前。Improvethisquestion谁能用Go编程语言解决以下问题?JamesgotholdofaloveletterthathisfriendHarryhaswrittenforhisgirlfriend.BeingthepranksterthatJamesis,hedecidestomeddlewithit.Hechangesallthewordsintheletterintopalindromes.Whilemodify

go - 如何为 “release” 创建一个 go 文件?

我想为“发布”制作一个Golang文件。这是我的命令:gobuild-otesti.exe-ldflags"-Hwindowsgui"正确的做法是什么?我的代码:packagemainimport("fmt""os"//"github.com/chai2010/qml""github.com/go-qml/qml")funcmain(){iferr:=qml.Run(run);err!=nil{fmt.Fprintf(os.Stderr,"error:%v\n",err)os.Exit(1)}}funcrun()error{engine:=qml.NewEngine()engine.O

go - 为什么没有渲染模板?

我是Go的新手,尝试呈现一个html表单模板interface.html与我的hello.go位于同一目录中。hello.go中的相关函数是:funcUserCreateForm(whttp.ResponseWriter,r*http.Request){varerrerrort:=template.New("interface")//Createatemplate.t,err=t.ParseFiles("interface.html")//Parsetemplatefile.log.Println(t)t.Execute(w,t)log.Println("templaterendere

Go:基本的 for 循环和 strconv

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭4年前。Improvethisquestion我是go语言的大一新生,想请教一些基础的东西,这个函数怎么理解?我们需要使用“strconv”来解决这个问题。packagemainimport("fat""strconv")typeStudentstruct{Namestring}func(stu*Student)Leave(){fmt.Println(stu.Name+"Leaving")}func(stu*Student)Present(){fmt