Golang入门基础教程(五)代码格式化

开头小故事

角色介绍

A:go开发工程师,代码整洁,格式清晰明了,严格按照语言格式进行code

B:go开发工程师,刚入门不久,之前做其他语言开发,go开发的语法在开发的过程中还带有其他语言的习惯,格式并没有严格按照go语言格式

场景

某公司使用go语言进行项目开发,需要A和B两人同时负责某一个项目进行协作

剧情

A早上上班,习惯性的拉取最新代码继续开发,哒哒哒的敲完一天的代码后,在下班前进行代码的提交,提交到git服务器,在确定自己一天所有的修改之后,发现某些文件并不是自己修改的,而是在执行fmt(ide自动fmt等)时自动修改的文件,顿时感觉自己的洁癖来的好猛烈。

A:你这代码在提交的时候没有格式化吗?

B:格式化?为什么还要格式化?

A:go可是一门特别整洁的开发语言,有着严格的语法规范的,gofmt你不知道吗?

B:不知道诶,讲一讲呗

这样就开始了gofmt的讲解

gofmt

go基础工具包中的一个工具,为了统一不同程序员的不同编写规范而出,能够将go代码进行统一的规范输出。

首先看一看gofmt的帮助文档

gofmt --help

usage: gofmt [flags] [path ...]
  -cpuprofile string
    	write cpu profile to this file
  -d	display diffs instead of rewriting files
  -e	report all errors (not just the first 10 on different lines)
  -l	list files whose formatting differs from gofmt's
  -r string
    	rewrite rule (e.g., 'a[b:len(a)] -> a[b:]')
  -s	simplify code
  -w	write result to (source) file instead of stdout

在工作中使用最多的也就是 gofmt -w main.go 格式化该源文件的代码然后将格式化后的代码覆盖原始内容

还有 -r参数进行规则的编写从而进行替换的语法等,当然这些在开发的过程中使用的并不多(在开发的时候自己就已经按照规范来编写,就不会产生那么多不规范的代码了)

IDEA插件

开发过程中也可以通过ide的插件来辅助我们开发进行格式化

File Watchers

file watcher 是idea上的插件,能够在文件变动时执行相应的任务

添加file watchers 插件

Golang入门基础教程(五)代码格式化

添加 gofmt 任务

Golang入门基础教程(五)代码格式化

如果想自动保存文件的时候进行fmt也可以在fmt里面进行相应的修改

后记

gofmt无疑是让代码更具可读性和规范性的最好的官方工具,但是作为辅助工具,还是希望用的越少越好。

用的越少当然说明自己的代码规范越好 :)

关于 gofmt 更多的说明可以参照官方文档