我在fmt.Sprintf中有一个很长的行.如何在代码中拆分它?我不想把所有东西放在一行,所以代码看起来很难看.
fmt.Sprintf("a:%s, b:%s ...... this goes really long")
Run Code Online (Sandbox Code Playgroud) 安装软件包后,我在 Sublime Text 中不断收到此错误gofmt:
Traceback (most recent call last):
File "/Users/abrahma/Library/Application Support/Sublime Text 3/Installed Packages/Gofmt.sublime-package/gofmt.py", line 257, in run_formatter
formatter = Formatter(view)
File "/Users/abrahma/Library/Application Support/Sublime Text 3/Installed Packages/Gofmt.sublime-package/gofmt.py", line 166, in __init__
self.cmds = [Command(cmd, self.view, self.window) for cmd in cmds]
File "/Users/abrahma/Library/Application Support/Sublime Text 3/Installed Packages/Gofmt.sublime-package/gofmt.py", line 166, in <listcomp>
self.cmds = [Command(cmd, self.view, self.window) for cmd in cmds]
File "/Users/abrahma/Library/Application Support/Sublime Text 3/Installed Packages/Gofmt.sublime-package/gofmt.py", line 77, in __init__
self.window)
File "/Users/abrahma/Library/Application Support/Sublime Text 3/Packages/golangconfig/all/golangconfig.py", line 227, …Run Code Online (Sandbox Code Playgroud) 在用 M-: (eval " PATH ")检查路径后,C:/Go/bin 的位置出现了,所以我知道找到了gofmt二进制文件。如果我尝试在其他文件上执行 Mx gofmt,它会给出正确的错误(不是 *.go 文件)。
但是我注意到消息中有一些奇怪的东西,这是 gofmt 试图格式化的地方..
调用 gofmt:gofmt (-wc:/Users/LunchBox/AppData/Local/Temp/gofmt5200q9o.go)
错误:(文件错误“搜索程序”“没有这样的文件或目录”“差异”)
为什么它在-w /appdata/locals/temp/etc ..?
不应该是我目前正在处理的文件吗?在 c:/work/users/ovRESTful/ovRESTful.go 中被称为 ovRESTful.go
我的代码行..
(add-hook 'before-save-hook 'gofmt-before-save)
Run Code Online (Sandbox Code Playgroud) 我想将 gofmt 添加到 CI/CD 管道中。如果它产生变化,我希望 gofmt 以状态 1 退出。
例如,如果我运行gofmt -s -l .并且列出了一些文件。我希望它以状态 1 退出。现在,当我运行时,echo $?给我 0,即使有一些文件列出了 gofmt 的更改。
我检查了文档,找不到相应的命令行选项。有 bash hack 可以做到这一点吗?
我在对 go fmt 包的菜鸟理解中遇到了一些问题
它涉及以下代码:
导入“fmt”
func main() {
var smallFloat float64 = 0.123456789
var bigFloat float64 = 123456789000
fmt.Println(fmt.Sprintf("%f", smallFloat))
fmt.Println(fmt.Sprintf("%f", bigFloat))
}
Run Code Online (Sandbox Code Playgroud)
输出是:
0.123457
123456789000.000000
Run Code Online (Sandbox Code Playgroud)
我不想使用科学记数法,所以认为 %f 适合我的需要。我可以从格式化页面(https://golang.org/pkg/fmt/)看到它说:
The default precision for %e and %f is 6; for %g it is the smallest number of digits necessary to identify the value uniquely.
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以使用 fmt 包来表示smallFloat 的完整十进制值,同时不在bigFloat 末尾附加6个零?
我想在 vim 上保存时运行 gofmt 而不安装任何插件。这是我尝试过的(灵感来自https://gist.github.com/tbrisbout/a91ac3419440cde40c5f54dc32c94427):
function! GoFmt()
let file = expand('%')
silent execute "!gofmt -w " . file
edit!
endfunction
command! GoFmt call GoFmt()
augroup go_autocmd
autocmd BufWritePost *.go GoFmt
augroup END
Run Code Online (Sandbox Code Playgroud)
这仅在没有格式错误时有效。但是,如果代码包含错误,它会在屏幕底部显示错误消息,并且(看起来)它以文本形式出现在缓冲区上,因此整个代码都会被破坏。有没有一种简单的方法可以在 vim 上处理此类工作?
在Sublime Text 3中,使用插件GoSublime并GoImports安装.
goimports每次保存时我都无法自动运行文件.
这是我试过的:
我的GoSublime设置设置为:
{
"env": {"GOPATH": "/home/nicolas/.go", "PATH": "$GOPATH/bin:$PATH" },
//"fmt_cmd": ["goimports"]
}
Run Code Online (Sandbox Code Playgroud)
当我使用这些设置保存时,代码将被格式化,但不会添加导入.到目前为止没什么可惊讶的.
如果我按下ctrl + shift + P然后按GoImports,则会按预期添加导入.
现在我的问题是,当我取消注释前一行以进行这些设置时:
{
"env": {"GOPATH": "/home/nicolas/.go", "PATH": "$GOPATH/bin:$PATH" },
"fmt_cmd": ["goimports"]
}
Run Code Online (Sandbox Code Playgroud)
它不仅不添加导入,而且不再进行其他格式化.
知道我哪里错了吗?
我正在使用Linux(Ubuntu).
以下是一些示例代码:
func main() {
os.MkdirAll(outDir + id, 0755)
os.Create(outDir + id + "/txt")
os.OpenFile(outDir + id + "/" + ".tmp", os.OWRONLY|os_APPEND)
os.Stat(outDir + id + "/.tmp")
}
Run Code Online (Sandbox Code Playgroud)
以下是两种格式后的输出go fmt或按Format上转到游乐场:
func main() {
os.MkdirAll(outDir+id, 0755)
os.Create(outDir + id + "/txt")
os.OpenFile(outDir+id+"/"+".tmp", os.OWRONLY|os_APPEND)
os.Stat(outDir + id + "/.tmp")
}
Run Code Online (Sandbox Code Playgroud)
在空间os.MkdirAll()和os.OpenFile()而他们在触及被删除os.Create()和os.Stat().我希望格式化是相同的.
为什么会这样?
我无法通过 use获取Golangfmt.scan()中用户的输入。
package main
import "fmt"
func main() {
fmt.Print("Enter text: ")
var input string
e, _ := fmt.Scanln(&input)
fmt.Println(input)
fmt.Println(e)
}
Run Code Online (Sandbox Code Playgroud)
停止调试器后:
代码图像
已err添加到代码中,但没有任何反应。
func main() {
fmt.Print("Enter text: ")
var input string
e, err := fmt.Scanln(&input)
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
fmt.Println(input)
fmt.Println(e)
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中添加错误后的图像。下一行中“不可用”是什么(在我的输入值:“51213”之后)