草庐IT

全部功能

全部标签

go - 实现 worker 功能的管道

我正在实现一个由多个通过channel连接的工作函数组成的管道。它们都得到(in,outchaninterface{})作为输入(每个函数接收前一个函数的out作为in)我不能保证out会在每个函数结束时关闭,所以我想知道我应该如何检查前一个函数是否完成了它工作。我从这样的事情开始:funcExecutePipeline(jobs...job){out:=make(chaninterface{},10)for_,val:=rangejobs{in:=outout:=make(chaninterface{})goval(in,out)}}我正在考虑以某种方式使用WaitGroup来使用函

signals - 是否可以以 "defer"方式捕获 Ctrl+C 信号 (SIGINT) 并运行清理功能?

我想捕获从控制台发送的Ctrl+C(SIGINT)信号并打印出一些部分运行总计。 最佳答案 您可以使用os/signal处理传入信号的包。Ctrl+C是SIGINT,因此您可以使用它来捕获os.Interrupt。c:=make(chanos.Signal,1)signal.Notify(c,os.Interrupt)gofunc(){forsig:=rangec{//sigisa^C,handleit}}()您使程序终止和打印信息的方式完全取决于您。 关于signals-是否可以以"d

Golang 上的 PHP gzdeflate/gzinflate 功能

我需要在go中实现gzdeflate/gzinflate函数(压缩级别9)我当前的Go实现如下所示:funcgzdeflate(strstring)string{varbbytes.Bufferw,_:=gzip.NewWriterLevel(&b,9)w.Write([]byte(str))w.Close()returnb.String()}funcgzinflate(strstring)string{b:=bytes.NewReader([]byte(str))r,_:=gzip.NewReader(b)bb2:=new(bytes.Buffer)_,_=io.Copy(bb2,r

go - 我可以限制包在 Golang 中有一些功能吗?

我有功能相似的包,因为它们是网络请求处理程序。我在每个包中都有这样的主页功能:packagehome_page_handlerfuncGetUrl()string{return"/"}funcGetPageName()string{return"HomePage"}为了更好地组织代码,我想知道我是否可以添加一个限制,可以通过接口(interface)使某些“类”的每个包都包含这些功能?这样一来,如果我再添加一个处理程序,当函数丢失或签名错误时,它会在编译时抛出错误。 最佳答案 您可以通过调用“注册”每个包packageservert

go - 我可以将我的功能用作 `negroni` 中间件吗

我有一个函数,我将其用作每个GET请求的包装器:typeHandlerFuncfunc(whttp.ResponseWriter,req*http.Request)(interface{},error)funcWrapHandler(handlerHandlerFunc)http.HandlerFunc{returnfunc(whttp.ResponseWriter,req*http.Request){data,err:=handler(w,req)iferr!=nil{log.Println(err)w.WriteHeader(500)}else{w.Header().Add("Co

go - 如何调试特定功能?

我有一个具有多种不同功能的网站。我可以使用localhost:5000/访问我的网站,当我使用vscode-go调试器以Debug模式运行它时,我收到以下消息API服务器监听:127.0.0.1:52238我有一个返回多个字符串的Name函数,但我无法在Debug模式下命中断点。我在我的Name函数中放置了一个断点,并将url放置如下:127.0.0.1:52238/name但是它没有到​​达断点。这里会发生什么?如果我正常运行应用程序并输入http://localhost:5000/name,我的代码如下然后一切正常,但在Debug模式下,此127.0.0.1:52238/name不

go - net.Listen 和 http.ListenAndServe 功能的区别

我是Go和网络的新手。我知道net.Listen和http.ListenAndServe都创建了一个服务器。但它们的功能有什么区别? 最佳答案 基本上,作为documentation对于net.Listen说:网络必须是“tcp”、“tcp4”、“tcp6”、“unix”或“unixpacket”。虽然http.ListenAndServe创建了一个HTTP服务器。 关于go-net.Listen和http.ListenAndServe功能的区别,我们在StackOverflow上找到一

rest - 如何使用 Golang 实现导入数据功能?

我有2个方法,用于GET和POST。第一个是:varJoinmap[string]intfuncMapTheFields(c*gin.Context){vardata[]string//OpenthecsvfilecsvFile,_:=os.Open("customers.csv")reader:=csv.NewReader(csvFile)line,_:=reader.ReadAll()fori:=0;i第二个也和第一个类似。它只是将值保存到数据库中。我一直面临的问题是,我必须将从csv文件中获取的字段映射到我项目中的字段,为此我制作了一个名为Join的映射如上所示,我正在访问第二个

GO编程,在阅读器事件上阻止读取功能

我是Go编程的初学者,对bufioreaders的一个问题感到困惑。我正在编写一种聊天客户端,它必须实时显示和发送我们的消息。但是直到我在我的终端中按下回车键,我收到的消息才会显示。经过几次测试,问题似乎出在我的“inputListener()”函数上,因为如果我在读取来自服务器的消息后放置它,来自服务器的消息将首先显示。我认为Read函数可能会阻塞我的循环,直到它得到一个'\n'或类似的东西。这是我的代码:packagemainimport"os"import"strconv"import"net"import"bufio"/*Recoveryourinputmessageintoa

firebase - 在谷歌云功能中找不到包 "firebase.google.com/go"

我正在尝试运行一些示例代码,这些代码使用Firestore服务器中的云函数存储一些随机数据,但是,云函数部署命令拒绝构建命令://PackagepcontainsanHTTPCloudFunction.packagepimport(//...firebase"firebase.google.com/go""log""net/http""os")//Store1StoresdataonFireBasefuncStore1(whttp.ResponseWriter,r*http.Request){//Usetheapplicationdefaultcredentialsctx:=conte