标签: gofmt

文件未使用“-s”进行“gofmt”编辑:为什么会发生这种情况以及如何解决?

每次我们在存储库上打开或更新拉取请求时,我们都会使用 linter(适用于 Golang)来运行 Github Actions 工作流程。

它最近开始返回以下错误

File is not `gofmt`-ed with `-s` (gofmt)

在该文件的其他 PR中发生的事情之后pkg/api/api/go
(编辑:添加链接以评估并最终重现错误)

证据:

原始提交

短绒输出

我想了解这个错误的根源是什么,以及如何解决它?

go gofmt linter github-actions

12
推荐指数
2
解决办法
4万
查看次数

如何为fmt.sprintf拆分长行

我在fmt.Sprintf中有一个很长的行.如何在代码中拆分它?我不想把所有东西放在一行,所以代码看起来很难看.

fmt.Sprintf("a:%s, b:%s  ...... this goes really long")
Run Code Online (Sandbox Code Playgroud)

go gofmt

9
推荐指数
2
解决办法
3814
查看次数

SublimeText 中的 Gofmt 插件未找到 GOPATH 错误

安装软件包后,我在 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)

go sublimetext3 gofmt

6
推荐指数
2
解决办法
2824
查看次数

保存挂钩上的 Emacs Golang gofmt - 不格式化

在用 M-: (eval " PATH ")检查路径后,C:/Go/bin 的位置出现了,所以我知道找到了二进制文件。如果我尝试在其他文件上执行 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)

emacs go gofmt

5
推荐指数
1
解决办法
1572
查看次数

当 gofmt 建议更改时,使 gofmt 以退出状态 1 退出?

我想将 gofmt 添加到 CI/CD 管道中。如果它产生变化,我希望 gofmt 以状态 1 退出。

例如,如果我运行gofmt -s -l .并且列出了一些文件。我希望它以状态 1 退出。现在,当我运行时,echo $?给我 0,即使有一些文件列出了 gofmt 的更改。

我检查了文档,找不到相应的命令行选项。有 bash hack 可以做到这一点吗?

bash go gofmt

5
推荐指数
1
解决办法
3145
查看次数

Go fmt float64问题

我在对 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个零?

go gofmt

4
推荐指数
1
解决办法
7844
查看次数

在没有插件的情况下在 vim 上运行 gofmt

我想在 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 上处理此类工作?

vim go gofmt

4
推荐指数
1
解决办法
2934
查看次数

在Sublime Text中保存goimports吗?

在Sublime Text 3中,使用插件GoSublimeGoImports安装.

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).

go sublimetext3 gofmt

3
推荐指数
1
解决办法
3611
查看次数

Go代码的格式不一致?

以下是一些示例代码:

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().我希望格式化是相同的.

为什么会这样?

go gofmt

3
推荐指数
1
解决办法
140
查看次数

如何在 Golang 中获取用户的输入(fmt.scan)

我无法通过 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”之后)

go gofmt

3
推荐指数
1
解决办法
8131
查看次数

标签 统计

go ×10

gofmt ×10

sublimetext3 ×2

bash ×1

emacs ×1

github-actions ×1

linter ×1

vim ×1