记一记go遇到的一些特性
可以看这篇文章
http://gfw.go101.org/article/line-break-rules.html
断行规则
1. 在Go代码中,注释除外,如果一个代码行的最后一个语法词段(token)为下列所示之一,则一个分号将自动插入在此字段后(即行尾):
-
一个标识符;
-
一个整数、浮点数、虚部、码点或者字符串[字面量](https://gfw.go101.org/article/basic-types-and-value-literals.html#basic-value-literals);
-
这几个跳转关键字之一
break、continue、fallthrough、return; -
自增运算
++或者自减运算--; -
一个右括号
)]}。
2. 为了允许一条复杂语句完全显示在一个代码行中,分号可能被插入在一个右小括)或者右大括}之前。
所以在go中这样写是不合法的
func main() {
a := 1
{
fmt.Print(a++)
}
}

router.Group写法
我在写gin框架的时候经常看到分组路由都是这样的写法
// API路由组
api := router.Group("/api")
{
// 文件相关路由
files := api.Group("/files")
{
files.POST("/upload", fileHandler.UploadFile)
files.GET("/:id", fileHandler.GetFileInfo)
files.DELETE("/:id", fileHandler.DeleteFile)
files.GET("", fileHandler.ListFiles)
files.GET("/:id/download", fileHandler.DownloadFile)
}
// 健康检查接口
api.GET("/health", func(c *gin.Context) {
c.JSON(200, gin.H{
"status": "ok",
"message": "流量文件处理平台运行正常",
})
})
}
在想为什么在router.Group()后面要换行用{}包裹语句块呢,明明函数调用已经结束了
尝试了一下才发现,其实就是为了归类方便看而已:)
所以其实把{}去掉也可以,正常写代码加个{}也不会报错
func main() {
{
fmt.Print("aaaa")
}
}
这是合法的