文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Go代码格式化gofmt如何使用

2023-07-06 04:52

关注

本篇内容介绍了“Go代码格式化gofmt如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

gofmt使用

对于一门编程语言来说,代码格式化是最容易引起争议的一个问题,不同的开发者可能会有不同的编码风格和习惯,但是如果所有开发者都能使用同一种格式来编写代码,开发者就可以将宝贵的时间专注在语言要解决的问题上。

Golang的开发团队制定了统一的官方代码风格,并且推出了gofmt工具(gofmt或go fmt)来帮助开发者格式化他们的代码到统一的风格。

Gofmt格式化Go程序。它使用制表符进行缩进,使用空格进行对齐。如果没有显式路径,它将处理标准输入。给定一个文件,它对文件进行操作;给定一个目录,它递归地操作该目录中的所有.go文件。(忽略以句点开头的文件。)

默认情况下,gofmt将重新格式化的源打印到标准输出。

有关gofmt的更多信息,请参见“go doc cmd/gofmt”。

用法:
    gofmt [flags] [path ...]

The flags are:
      -cpuprofile string
        将CPU配置文件写入此文件
    -d
        不将重新格式化的源打印到标准输出。
        如果一个文件的格式与gofmt的不同,则将差异部分打印到标准输出。
    -e
        打印所有(包括虚假)错误。
    -l
        不将格式化的源打印到标准输出。
        如果文件的格式与 gofmt 不同,则将其名称打印到标准输出。
    -r rule(string)
        在重新格式化之前,对源应用重写规则(例如,'a[b:len(a)] -> a[b:]')
    -s
        尝试简化代码(在应用重写规则后,如果有的话)。
    -w
           不将重新格式化的源打印到标准输出。
           如果文件的格式与 gofmt 不同,则用 gofmt 的版本覆盖它。
        如果在覆盖期间发生错误,原始文件将从自动备份中恢复

1. -s

gofmt默认不对代码进行简化,使用-s参数可以开启简化代码功能,具体来说会进行如下的转换:
gofmt -l -d -w -s [path]

去除数组、切片、Map初始化时不必要的类型声明:

如下形式的切片表达式:
    []T{T{}, T{}}
将被简化为:
    []T{{}, {}}

去除数组切片操作时不必要的索引指定

如下形式的切片表达式:
    s[a:len(s)]
将被简化为:
    s[a:]

去除迭代时非必要的变量赋值

如下形式的迭代:
    for x, _ = range v {...}
将被简化为:
    for x = range v {...}
如下形式的迭代:
    for _ = range v {...}
将被简化为:
    for range v {...}

不过这可能会导致与早期版本的 Go 不兼容的更改。

2. -r

可以看到,gofmt命令还支持自定义的重写规则,使用-r参数,按照pattern -> replacement的格式传入规则。

# 检查文件中是否有不必要的括号:    gofmt -r '(a) -> a' -l *.go# 删除括号:    gofmt -r '(a) -> a' -w *.go

3. go fmt和gofmt

gofmt是一个独立的cli程序,而go中还有一个go fmt命令,go fmt命令是gofmt的简单封装。

usage: go fmt [-n] [-x] [packages]Fmt runs the command 'gofmt -l -w' on the packages namedby the import paths. It prints the names of the files that are modified.For more about gofmt, see 'go doc cmd/gofmt'.For more about specifying packages, see 'go help packages'.The -n flag prints commands that would be executed.The -x flag prints commands as they are executed.To run gofmt with specific options, run gofmt itself.See also: go fix, go vet.

go fmt命令本身只有两个可选参数-n-x

如果需要更细化的配置,需要直接执行gofmt命令。

4. goland中配置gofmt

点击Setting-> Tools -> File Watchers,点加号添加一个go fmt模版,Goland中预置的go fmt模版使用的是go fmt命令,将其替换为gofmt,然后在参数中增加-l -w -s参数,启用代码简化功能。添加配置后,保存源码时,goland就会执行代码格式化了。

Go代码格式化gofmt如何使用

“Go代码格式化gofmt如何使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯