200字
go换行相关的解析
2025-11-28
2025-11-27
go

记一记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);

  • 这几个跳转关键字之一breakcontinuefallthroughreturn

  • 自增运算++或者自减运算--

  • 一个右括号)]}

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")

    }

}

这是合法的

评论