golang新一代格式化工具(更强的代码洁癖),gofmt可以退休了

本文介绍了gofumpt,一个基于gofmt的更严格的代码格式化工具,具有不格式化vendor和testdata、不支持-r参数等特性,并展示了如何在Goland中实现自动格式化。
摘要由CSDN通过智能技术生成

gofmt 是 golang 自带的代码自动格式化工具,是企业开发必用的代码格式化工具。但是今天的主角是gofumpt,比gofmt多了up,可以理解为他的升级版。


gofumpt的官网是GitHub - mvdan/gofumpt: A stricter gofmt。是从gofmt的基础上进行开发的。是gofmt的平替,具有更严格的格式化要求。

gofumpt的几个特点

第一个:默认跳过对 vendor 和testdata的格式化

第二个:不支持 -r 参数

第三个:更多的格式化规则



快速使用

第一步:安装

go install mvdan.cc/gofumpt@latest


规则列举

第一个:赋值运算符后不能有空行

func foo() {
    foo :=
        "bar"
}

格式化后

func foo() {
	foo := "bar"
}

这样可以防止有些人觉得遗憾代码太长带来的自己的断行行为。


第二个:简单的错误检查之前不能有空行

package test

foo, err := doSomethingHappy()

if err != nil {
return err
}

格式化后

package test

foo, err := doSomethingHappy()
if err != nil {
return err
}


第三个:函数体不能用空行

func doSomethingHappy() {
<span class="hljs-built_in">println</span>(<span class="hljs-string">"doSomethingHappy"</span>)

}

格式化后

func doSomethingHappy() {
println(“doSomethingHappy”)
}


第四个:标准库的导入必须位于顶部的单独组中

package test
import (
“foo.com/bar”

“io”

“io/ioutil”
)

格式化后

package test

import (
“io”
“io/ioutil”

“foo.com/bar”
)


第五个:没有字段的结构体/接口的写法

var V interface {
} = 3

type Base struct {
}

func BaseFunction(
)

格式化后

var V interface{} = 3

type Base struct{}

func BaseFunction()


第六个:短的case判断写在一行

switch c {
case ‘a’, ‘b’,
‘c’, ‘d’:
}
switch c {
case ‘a’, ‘b’, ‘c’, ‘d’:
}


第七个:多个顶级的声明之间用逗号隔开

func foo() {
println(“multiline text”)
}
func bar() {
println(“multiline text”)
}
func foo() {
println(“multiline text”)
}

func bar() {
println(“multiline text”)
}


第八个:单个变量声明不用括号

var (
foo = “bar”
)
var foo = "bar"


第九个:简单的变量定义用简写的方式

var s = "somestring"
s := "somestring"


第十个:注释要先加一个空格


//DoIt is something that i do.
func DoIt() {}

// DoIt is something that i do.
func DoIt() {}


Goland使用gofumpt

手动格式化

在终端执行

gofumpt -l -w .


自动格式化

第一步:安装File Watcher 插件

第二步:点击 Settings -> Tools -> File Watchers,然后添加一个 gofumpt 工具,然后OK,这样以后文件每次保存时则会自动触发代码格式化。


  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值