因为 golang 的标准库很丰富,想要的模块都内置了所入了坑。。
但是 go fmt 这个缩进很烦啊,都不能自定义的。
Gofmt formats Go programs. It uses tabs (width = 8) for indentation and blanks for alignment.
不会是懒得做选项吧?
我习惯缩进四个字符宽度=1 个 tab 在 goland IDE 上缩进成这个样子好丑,要是再嵌套个两三层。。
还有不能导入多余包,不允许无用语句之类的, 感觉很霸道很不讲道理呀这么做
1
chingli 2017-03-04 21:01:59 +08:00
Go 默认是用 tab 缩进的, 8 字符宽是你你编辑器设置的问题。我记得也可是设为 4 个空格而不是 tab 。
|
3
goofansu 2017-03-04 21:17:44 +08:00
你可以设置编辑器里的 tab 显示成多少个空格,至少 emacs 里是可以的
|
4
xiaq 2017-03-04 21:21:09 +08:00 via iPad
gofmt 实际上用到这个假设的地方是很少的,你在编辑器里把 Tab 宽度设成别的值也没什么影响。这个宽度值多半是 Rob Pike 用的。
倒入包的问题用 goimports 就能解决。 |
5
chingli 2017-03-04 21:22:47 +08:00
@itoolset 以往 go 是可以设置用空格缩进的,现在不行了。详见: https://news.ycombinator.com/item?id=7914523
不过你缩进 8 个空格位还是因为你编辑器的原因,比如在 .vimrc 中设置: set tabstop=4 缩进就占 4 个空格位了。 |
6
xiaq 2017-03-04 21:26:28 +08:00
从设计思路上来说, Go 是个自带风格指引( style guide )的语言。
导入包必须要用、变量必须要用,这些如果出现在风格指引里面,是一点都不过分的。 |
8
reus 2017-03-04 21:28:31 +08:00
go fmt 用 '\t' 缩进。
一个 '\t' 显示多宽,是你的编辑器的事情,和 go fmt 没有关系。 统一缩进字符是十分有益的。 |
9
CRVV 2017-03-04 21:59:11 +08:00
@itoolset
导入一个包会产生副作用,比如 http/pprof 的用法就只是把它 import import 一堆不用的包会编译进去一堆不用的东西,还会在启动的时候调用一堆不用的 init 函数,这显然不是 Go 的风格 |
10
Technetiumer 2017-03-04 22:10:01 +08:00
tab 本身就是 8 个空格宽啊
|
11
itoolset OP |
12
gamexg 2017-03-05 00:03:39 +08:00
在项目根目录加个 .editorconfig 文件
# http://editorconfig.org root = true [*] charset = utf-8 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true [*.go] indent_style = tab indent_size = 4 [*.tmpl] indent_style = tab indent_size = 2 [*.{less,yml}] indent_style = space indent_size = 2 [*.js] indent_style = space indent_size = 4 |
13
Technetiumer 2017-03-05 14:44:01 +08:00
@itoolset 我记得 1 个制表符本身就是 8 个空格宽度,而一般都会在编辑器里设置成 1 个制表符 4 个空格宽度
https://www.zhihu.com/question/19960028/answer/15262434 http://baike.baidu.com/item/Tab/4023 https://en.wikipedia.org/wiki/Tab_key https://zh.wikipedia.org/wiki/製表鍵 |
14
itoolset OP @Technetiumer
谢谢长知识了 |
15
afpro 2017-03-06 05:39:35 +08:00
go 最讨厌的是 他知道哪些是无用 import 那打包的时候忽略掉就好了 他不 他非让你改 开发的时候好恶心啊
|