草庐IT

go-import

全部标签

go - 创建文件和 ioutil.ReadFile 之间的竞争条件

我有一个允许上传图像的golang网络应用端点,但我发现创建一个文件并立即使用ioutil.ReadFile读取它会导致data到是空的。但如果我稍后再次调用它,它将包含数据。r.ParseMultipartForm(32有没有办法避免创建和阅读之间的竞争条件,也许是一个promise?编辑:我尝试同步刷新文件,但同样的问题仍然存在。 最佳答案 您是否尝试过使用File.Sync?Synccommitsthecurrentcontentsofthefiletostablestorage.Typically,thismeansflus

go - 一段代码在golang中做什么?

这个问题在这里已经有了答案:Isthiscastingingolang?(1个回答)关闭5年前。我试图搜索它并弄清楚它是如何工作的,但我找不到解释。如果我有一个类型为interface{}(数据接口(interface){})的变量dataeventData:=data.(map[string]interface{})会做什么?我知道界面可以代表很多东西,但他在这里发生的事情的高级概述是什么?

go - 在数据库 golang 中保存发布数据(具有整数和字符串值)的正确方法是什么?

我有以下golang代码:packagemainimport("github.com/gin-gonic/gin""gopkg.in/mgo.v2""gopkg.in/mgo.v2/bson""log""time")funcmain(){router:=gin.Default()router.POST("/save-address",SaveAddress)router.Run()}funcSaveAddress(c*gin.Context){varerrerrorconditions:=bson.M{}c.Request.ParseForm()forkey,_:=rangec.Req

javascript - Go lang 执行 javascript 以检索页面中的文本

我正在尝试使用golang检索从网页动态加载的文本。要检索的文本在此页面上:https://www.protectedtext.com/testretrieve?1234此文本由密码加密,然后在客户端解密并动态加载到页面上。我已经通过选择“textarea”对象尝试使用goquery,但我无法获取文本,因为它是动态加载的。我怎样才能做到这一点?通过在Go中执行JS?它在我的chrome控制台中工作,但不知道如何在Go中执行此操作。轻量级解决方案最适合我的项目。或者可以在不修改URL的情况下存储和编辑相同文本的任何其他网站? 最佳答案

go - 使用 gob 在 Go 中编码 websockets

我正在使用Go中的websockets编写一个聊天应用程序。将有多个聊天室,想法是将连接到聊天室的所有websocket存储在Redis列表中。为了在Redis中存储和检索websockets,我必须对它们进行编码/解码,并且(根据this问题)我认为我可以为此使用gob。我正在使用github.com/garyburd/redigo/redis作为Redis和github.com/gorilla/websocket作为我的websocket库。我的函数看起来像:funcaddWebsocket(roomstring,ws*websocket.Conn){conn:=pool.Get(

class - 如何从函数/方法将数据保存在 Go 结构中?

这个问题在这里已经有了答案:Howtosetandgetfieldsinstruct'smethod(3个答案)Assignanewvaluetoastructfield(2个答案)Structfieldreverts[duplicate](1个回答)关闭5年前。我刚开始使用Go,我很难在struct中保存数据。来self学到的其他语言,Go中没有class这样的东西。出于类似的目的,可以使用struct,并且可以将函数“添加”到结构中。所以我写了下面这个简单的程序:packagemainimport"fmt"typeMyStructstruct{the_numberint}func(

go - 我们可以在 Go 中使用 select to Accept() 来自不同的监听器吗?

就像下面的代码:for{select{caseconn,err:=listener1.Accept():iferr!=nil{log.Fatal(err)}gohandleConn1(conn)caseconn,err:=listener2.Accept():iferr!=nil{log.Fatal(err)}gohandleConn1(conn)}}虽然编辑器告诉我select有问题我们可以在Go中实现类似的东西吗? 最佳答案 select仅适用于channel(请在此处查看更多信息:https://gobyexample.com

go - Go 中的函数类型 - 将特定类型转换为更通用的类型

我在Go中需要做什么强制转换/断言才能传递给期望像func(interface{})interface{}这样的通用函数的函数,一个更具体的功能,如func(int)int相反?例如,在这样的代码中,fooA可以传递给MakeExclamer,但不是fooB:funcMakeExclamer(foofunc(interface{})interface{},nint)func(){returnfunc(){fmt.Printf("%v!!!",foo(n))}}funcfooA(xinterface{})interface{}{returnx.(int)*2}funcfooB(xint)

go - 如何在 Golang 模板中打印对象,就像我们可以在 JavaScript 中完成一样

renderTemplate(w,"index",map[string]interface{}{"ActualQAll":req.URL.Query(),})在golanghtml中...{{.ActualQAll}}...但它什么也没显示。我怎样才能像在javascript中通过执行JSON.stringify(obj)一个对象那样打印出整个对象?谢谢 最佳答案 使用fmt.Sprintf函数,可能像下面这样:renderTemplate(w,"index",fmt.Sprintf("%s",ActuallQAll))我不确定这个

go - 为什么我的 URL.Path 语句没有被命中

下面是我展示html模板的函数。我最近开始在我的博客页面上工作,由于某种原因,我的第一个和第二个“elseif”语句没有被击中。:funchandleRequest(whttp.ResponseWriter,r*http.Request){templates:=populateTemplates()//presenthome.htmliftherequesturlis"/"ifr.URL.Path=="/"{t:=templates.Lookup("home.html")t.Execute(w,nil)}elseifr.URL.Path=="blog/"{posts:=getPosts