草庐IT

go-mocket

全部标签

go - Go 接口(interface)如何支持类型信息?

来自https://research.swtch.com/interfaces:“要检查接口(interface)值是否包含特定类型,如上面的类型转换,Go编译器生成等效于C表达式s.tab->type的代码以获取类型指针并根据所需类型检查它。”什么是类型指针以及在这个例子中切换类型的开销是多少https://play.golang.org/p/2HIOtPOB1w?typeStstruct{xint}funcmain(){variinterface{}i=12switchi.(type){caseint:fmt.Println("int")caseSt:fmt.Println("St

go - 隐藏标志默认值

Go提供简单的CLI开关,也就是标志。vardebug=flag.Bool("debug",false,"enabledebugging")varhostname=flag.String("hostname","127.0.0.1","hostname")flag.Parse()正如预期的那样产生>./program-hUsage:-debugenabledebugging-hostnamestringhostname(default"127.0.0.1")我想隐藏特定标志的(default"127.0.0.1")部分。在SO上搜索并建议使用flag.FlagSet。varshownf

sockets - 如何发现客户端正在从 go 中的 tcp 缓冲区读取

我开始在一个项目中使用golang相当长的时间。在我的项目中,我必须实现一个响应tcp客户端的tcp服务器。服务器必须向客户端发送大量消息。问题是,当服务器向客户端连接写入消息时,它必须等到客户端从缓冲区读取该消息,然后再发送另一条消息(服务器必须等到客户端调用reader.ReadString('\n')方法)。在我的服务器代码中我写了:for{data:=但服务器将所有消息发送给客户端,而无需等待客户端中的ReadString。如何让服务器等到客户端读取一条消息,然后再发送另一条消息? 最佳答案 我认为要么赋值不明确,要么你误解

go - Go 中缓冲 channel 和非缓冲 channel 之间的测距有什么区别?

我正在尝试类似于以下模式的操作:funcsendFunc(nint,cchanint){fori:=0;i输出看起来是同步的,像这样:PushedPushedPushedPushedPushedPushedPushedPushedPushedPushed0123456789如果我将缓冲channel更改为非缓冲channel:c:=make(chanint)结果似乎是异步的:Pushed01PushedPushed23PushedPushed45PushedPushed67PushedPushed89Pushed为什么它的行为不同?已更新所以我的场景是:在接收者中,每次从生产者接收到新

go - 在 Go Lang 中避免 http.ResponseWriter 等类型重复

我正在学习Go并开始了一个小型网络应用程序。太棒了。但我已经掌握了最基本的知识。那么,您认为真正的Goweb应用程序的良好文档源是什么?例如,现在我有15个方法获取“http.ResponseWriter”等作为参数(我的意思是大量重复)。我想有更好的方法。但我不想以其他语言(Python、Ruby、Perl等)的确切思维方式(解决方案)开始编程Go。不是因为它是错误的,而是因为它可能是(我不知道,这就是重点)错误。这是一个例子:funcnewStudentHandler(whttp.ResponseWriter,r*http.Request){p:=studentPage{Title

go - golang 中电子邮件模板的 Parse Html token 方法是什么?

我正在尝试在golang中创建具有html标记的电子邮件模板。我在网上搜索了一下,找到了"html/template"图书馆。它支持如下的token格式Hello{{.Name}}Confirmemailaddress但是对htmltoken的要求是这样的Name:{{test.name}}Phone:{{test.phone}}Address:{{test.address}},{{test.city}},{{test.state}}{{test.zip}}我无法在golang或任何支持此类格式的库中找到此类token系统。谁能告诉我如何实现创建此类token。属性前不应有点。它应该只

go - 在golang的If-else block 中为变量分配不同的结构

我想做这样的事情typeStruct1{str1string}typeStruct2{int1int}ifsomething{someVar:=Struct1{str1:''}}else{someVar:=Struct2{int1:1}}somefunc(someVar)我知道我不能在一个block内声明c然后在外部访问它。我试过这样的东西typeStruct1{str1string}typeStruct2{int1int}someVar:=Struct2{b:1}ifsomething{someVar:=Struct1{a:''}}somefunc(c)它给出了一个错误-Cannot

go - 第一次写入后写入终止符(即 ox1e)失败

我有一些数据(实际上是MARC记录),我正在尝试使用go(版本1.9.2)创建,但我不知道如何将定界字符写入输出文件。下面的代码片段是我能想到的最接近的示例。第一项用适当的终止符写入,但之后没有其他内容。在go中编写这些类型的终止字符的最佳/正确方法是什么?constfieldTerminator=0x1efuncmain(){data:=[]string{"itemone","itemtwo","itemtre"}writer,err:=os.Create("x.out")iferr!=nil{log.Fatalf("Couldnotopenfile:%q\n",err)}defer

angular - 从 Angular 到 GO 的 HTTP 请求 => 状态代码 :422 Unprocessable Entity

我以某种方式收到HTTP422响应:状态码:422不可处理的实体fmt.Println(c)的控制台消息是:&{{0xc04227c1c0-1200}0xc0421b21000xc042086d10[][0x8fdc000x8fe9500x97e3100x97cf80]30xc0421ea5a0map[][]}map应该填写myEmail和myPassword但事实并非如此。body有问题还是和webAPI有关?这是我的HTTP请求:this.http.post('http://localhost:8080/api/v1/users',{'email':'myEmail','passw

go - 如何使用 Ubuntu 更新 codeanywhere.com 上的 golang

如何使用Ubuntu14.04更新codeanywhere.com上的golang?默认容器使用Ubuntu存储库中的版本,而不是golangPPA。在撰写本文时,它是1.6,最新版本是1.9。 最佳答案 (还不能发表评论)只是一个附加信息,当您在空白容器上运行时,PawełPrażak的回答中的步骤有效。如果您在Go预定义堆栈上运行它们,它不会更新。我还建议将GOPATH值更改为您的工作区,运行exportGOPATH=$HOME/go然后运行​​goenv检查值是否正确更新。顺便感谢您的回答,Paweł!