- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在使用 go:generate 处理自动生成一些数据库模型,我希望通过 gofmt
运行我的 go 模板,但它被所有额外的 {{ ... }}
动态部分。
我是否遗漏了一些明显的东西?我希望这是 gofmt
人员解决的用例,因为 gofmt
和 go generate
都是 go 工具链的重要部分。
显然,在 go generate
之后运行 go fmt
是可行的,但是让 99% 都是 go 代码的格式不佳的模板感觉很脏。
最佳答案
大多数生成工具将模板执行到 *bytes.Buffer,使用 format.Source 格式化缓冲区字节并将结果写入输出文件。
给定模板 t
和输出编写器 w
,代码如下所示:
var buf bytes.Buffer
if err := t.Execute(&buf, data); err != nil {
// handle error
}
p, err := format.Source(buf.Bytes())
if err != nil {
// handle error
}
w.Write(p)
修改模板并不能保证输出会被修改。鉴于使用 go/format 包 gofmt 输出是多么容易,创建一个 gofmt 模板工具没有什么值(value)。
关于go - 是否可以在设计用于 go generate 的模板上使用 gofmt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34126083/
我正在使用带有 go 版本 go1.13.1 linux/amd64 的 Vim 版本 8.1.1401。我试图禁止 gofmt 将所有 if 语句括号放在新行上,例如: if thing { ret
我想将 gofmt 添加到 CI/CD 管道中。如果它产生变化,我希望 gofmt 以状态 1 退出。 例如,如果我运行 gofmt -s -l . 并且列出了一些文件。我希望它以状态 1 退出。现在
当使用 gofmt 格式化 go 源代码时,它会保留换行符,以便您可以将项目组合在一起。我对这实际上是如何实现的很感兴趣。我试着查看 github repo golang/go 中的源代码,但无法立即
我使用的是 iMac 27'' 2013 年末机型,我想针对 my package 运行 gofmt 工具. 我是这样调用它的: iMacs-Image:sergiotapia ~/smitego $
我正在尝试做 gofmt重写以特定前缀开头的所有包。像这样的东西: gofmt -r 'github.com/some/path/ -> someotherrepo.com/some/path/' 显
gofmt 命令不格式化花括号 ({})。 代码: package main import "fmt" func main() { fmt.Printf("Hello, world\n") }
如果你有这样的代码:func MyFunc(a int, b int) gofmt 重写规则能否将其更改为:func MyFunc(a, b int) 我试过:gofmt -r "f(x t, y t
在我正在维护的 go HTTP 服务器中,使用 VS Code 作为我的 IDE - gofmt 命令会在文件保存时执行,但它不遵守我引入的手动对齐为了可读性。 例如,我的代码如下: subRoute
我使用 go 1.6,我喜欢使用单引号。完成文件编辑后,我想在我的终端中使用 gofmt 替换它们,但没有任何效果。 gofmt -r "'->\"" book.go parsing
gofmt 命令支持 -r 标志以在格式化代码期间使用重写规则。如何使用它来将 制表符缩进 替换为 空格缩进? 最佳答案 Go 的格式由 gofmt 强制要求使用制表符缩进。另请参阅导致它的决定: h
我想我的 gofmt 没有正常工作,对吗? 原始文件: package main import "fmt" func main() { fmt.Printf("hello, world\n")
发布 'generate'工具开辟了很多令人兴奋的可能性。我一直在努力使我的测试更好。我有一个查询外部 API 的函数,该 API 的位置在全局变量中定义。难题之一是将该值替换为在“生成时”确定的值。
我正在试验 gofmt 工具的重构功能 go基于此的代码blog post ,我有一个简单的例子: package main import ( "fmt" ) var v = 12 func
我将 IntelliJ 与 Golang 插件一起使用。是否可以将 IDE 配置为在文件保存时执行 gofmt? 最佳答案 当然可以。 安装File Watchers plugin 打开“Prefer
安装 gofmt 包后,我在 Sublime Text 中不断收到此错误: Traceback (most recent call last): File "/Users/abrahma/Libr
我遇到了一个项目,它的 gitlab-ci.yml 中有这一行 go fmt $(go list ./... | grep -v/vendor/)接下来是 go test,然后是 go build。
我看到有 gofmt 和 go fmt。 gofmt 和 go fmt 有什么区别? 最佳答案 运行 go help fmt 来查看区别。简而言之,go fmt 在参数指定的包上运行 gofmt -l
我正在使用 go:generate 处理自动生成一些数据库模型,我希望通过 gofmt 运行我的 go 模板,但它被所有额外的 {{ ... }} 动态部分。 我是否遗漏了一些明显的东西?我希望这是
我正在编写输出其他 Go 代码的 Go 代码。 我想知道是否有一种方法可以调用 gofmt 工具来从完成编写的代码中格式化我编写的代码。 我在 gofmt 上找到的文档,例如the official
我正在尝试使用 Emacs 进行 golang 编程。我下载了 go-mode 包并安装了它。我的 .emacs 是: (require 'go-mode) 当我打开 *.go 文件时,go-mode
我是一名优秀的程序员,十分优秀!