草庐IT

go - 为什么编译器在这个实例中提示一个未使用的变量(当它被 fmt.Fprintf 使用时)?

我有一段简单的代码,我想将slice的元素转换为json,然后将它们打印到我的http.responseWriter。for_,element:=rangecustomers{result,_:=json.Marshal(element)fmt.Fprintf(w,string(result))}然而,当我编译它时,我收到错误“resultdeclaredandnotused”。如果我添加一个简单的行:_=result然后一切都可以编译并正常工作。为什么编译器会提示这种用法,在go中正确的做法是什么?感谢任何见解,到目前为止,我的搜索似乎表明对Fprintf的调用应该算作一次使用。

go - 为什么我使用 fmt.Fscanf 时得到 "input does not match format"?

我正在尝试使用fmt.Fscanf但我很难弄清楚如何使用。具有以下代码:packagemainimport("fmt""strings")funcmain(){varhost,user,date,httpStrstringvarcode,sizeintr:=strings.NewReader(`127.0.0.1-james[09/May/2018:16:00:39+0000]"GET/reportHTTP/1.0"200123`)_,err:=fmt.Fscanf(r,`%s-%s[%s],"%s"%d%d`,&host,&user,&date,&httpStr,&code,&siz

go - 检查对 fmt.Errorf() 的调用是否失败

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭4年前。Improvethisquestion在Go中,函数fmt.Errorf()返回一个错误接口(interface)。检查fmt.Errorf()本身是否失败的正确方法是什么?

go - println 和 fmt.Println 的竞争检测器输出不同

我无法解释竞争检测器中println和fmt.Println的不同输出。我希望两者都是种族,或者至少两者都不是种族。packagemainvaraintfuncf(){a=1}funcmain(){gof()println(a)}并且,它会按预期找到竞争条件。0==================WARNING:DATARACEWritebygoroutine5:main.f()/home/felmas/test.go:6+0x30Previousreadbymaingoroutine:main.main()/home/felmas/test.go:11+0x4dGoroutine5(

linux - Go 代码构建错误,标准包中的非标准导入 "fmt",导入周期不允许

我已经在go中工作了一段时间,这个周末我想尝试部署一些服务器代码。当我在一些非常简单的代码上运行gobuild来测试Go是否正常工作时,我得到了这个错误:can'tloadpackage:($HOME)/go/src/goTest/main.go:4:2:non-standardimport"fmt"instandardpackage"goTest"importcyclenotallowedpackagegoTestimportsfmtimportserrorsimportsruntimeimportsruntime/internal/atomicimportsunsafeimport

go - goland reformat shortcut(ctrl+alt+L) 和 go fmt 有什么区别?

我总是使用goland的键盘快捷键ctrl+alt+L(重新格式化代码)来格式化我的goland代码。当我使用gofmt命令时,它仍然会进行一些更改。那么...golandreformat(ctrl+alt+l)和gofmt之间有什么区别? 最佳答案 内置格式化程序,可通过ctrl+alt+L(重新格式化代码)获得,是IDE为格式化代码。它目前(截至2018.2)不是100%与gofmt相当,所以我建议在提交文件之前使用gofmt。至于您在DVCS中提到的更改,您需要在此处或theissuetracker上提供更多详细信息,以便了解

go - fmt.Println 中的 Variadic 变量扩展

这个问题在这里已经有了答案:Typeconvertingslicesofinterfaces(9个回答)关闭3年前。packagemainimport"fmt"funcmain(){a:=[]int{1,2,3}fmt.Println(a...)}运行会出现以下错误./program.go:5:不能在fmt.Println的参数中使用(type[]int)作为类型[]interface{}来自godocfmtPrintlnfuncPrintln(a...interface{})(nint,errerror)Println接受任何值,因为它是一个空接口(interface)。让我感到困惑

go - 为什么 strings.Builder 在我的测试程序中追加字符串比 fmt.Sprint 慢?

我正在尝试优化结构FmtC的String()函数的速度。基于以下基准。如果我使用strings.Builder预分配1024字节,它比fmt.Sprint(437ns)慢(624ns)。如果我预先分配32字节,strings.Builder会更快(74.8ns),但如果FmtC包含更多成员字段,它就没有用了。如果我通过slice追加方法预分配1024字节,它是最慢的(2337ns)。go版本:go1.12.7linux/amd64。去测试-v-bench=。-benchmemBenchmarkFmtSprint_32-23000000435ns/op64B/op4allocs/opBe

转到 fmt float64 问题

我在对gofmt包的菜鸟理解中遇到了一些问题涉及到以下代码:导入“fmt”funcmain(){varsmallFloatfloat64=0.123456789varbigFloatfloat64=123456789000fmt.Println(fmt.Sprintf("%f",smallFloat))fmt.Println(fmt.Sprintf("%f",bigFloat))}输出是:0.123457123456789000.000000我不想使用科学记数法,所以认为%f会满足我的需要。我可以从格式化页面(https://golang.org/pkg/fmt/)中看到它说:Thed

go - fmt 格式说明符仅打印具有非零值的字段

考虑这段代码:packagemainimport("fmt")typemyStructstruct{astringbintcbool}funcmain(){s:=myStruct{c:true,}fmt.Printf("%v",s)//print{0true}fmt.Printf("%+v",s)//print{a:b:0c:true}}是否有fmt格式说明符来仅打印具有非零值的字段?比如上面的代码,我怎么才能只打印{c:true}因为a==""和b==0? 最佳答案 没有导致零值被省略的内置格式动词。这里有一些选项。fmt.纵梁您