Effective Go-Formatting

359 阅读1分钟

Effective Go - The Go Programming Language (google.cn)

格式化 |《高效的 Go 编程 Effective Go 2020》| Go 技术论坛 (learnku.com)

格式化问题是备受争议最多的一个话题,每个人可以适应不通的编码风格,若所有人都遵循相同的编码风格,在这类问题上浪费的时间会减少。

Go语言提供了go fmt,让机器来处理风格缩进、对齐、保留注释并在需要时重新格式化。

image.png

借助IDE(GoLand),通过快捷键也能快速及时帮我们格式化代码。 image.png

缩进

我们使用制表符(tab)缩进,gofmt 默认也使用它。在你认为确实有必要时再使用空格。

行的长度

image.png Go 对行的长度没有限制,别担心打孔纸不够长。如果一行实在太长,也可进行折行并插入适当的 tab 缩进。

括号

比起 C 和 Java,Go 所需的括号更少:控制结构(if、for 和 switch)在语法上并不需要圆括号。 如下实例,Go的语法结构比Java、C、C#在控制语句中省略了括号。

func control(x int) {
   if x == 1 {
      fmt.Println("1")
   }

   switch x {
   case 1:
      fmt.Println("switch 1")
   case 2:
      fmt.Println("switch 2")
   }

   for x < 10 {
      x++
   }

   for i := 0; i < 10; i++ {
      
   }
}

此外,操作符优先级处理变得更加简洁。(个人不确定这个优化处理是否妥当。)

func main() {
   x := 1
   var result = x<<8 + 1
   fmt.Println(result)
}

符号优先级中,<<的优先级是低于+的。在其他语言中,该结果会是512,而Go的简化,结果为256.