Синтаксический вопрос из документации `gin-gonic`
Я развивался в Node/Python в течение многих лет, и в течение отпуска я пытался расширить свои знания о Go. У меня есть любимый проект, над которым я работаю, чтобы изучить его.
Когда я читал джин-гоническую документацию, я нашел синтаксис, который я не могу обернуть вокруг.
func main() {
router := gin.Default()
// Simple group: v1
v1 := router.Group("/v1")
{
v1.POST("/login", loginEndpoint)
v1.POST("/submit", submitEndpoint)
v1.POST("/read", readEndpoint)
}
// Simple group: v2
v2 := router.Group("/v2")
{
v2.POST("/login", loginEndpoint)
v2.POST("/submit", submitEndpoint)
v2.POST("/read", readEndpoint)
}
router.Run(":8080")
}
В основном это выглядит как router.Group()
Метод принимает структуру, но я не совсем уверен, что за механика здесь... Она не заключена в скобки. Как этот объект передается / обрабатывается Group
метод?
1 ответ
Спецификация языка программирования Go
Блок - это, возможно, пустая последовательность объявлений и операторов в соответствующих скобках.
Объявления и область применения
Go лексически ограничен с использованием блоков.
Например, v1.POST
операторы вызова метода формируют блок:
// Simple group: v1
v1 := router.Group("/v1")
{
v1.POST("/login", loginEndpoint)
v1.POST("/submit", submitEndpoint)
v1.POST("/read", readEndpoint)
}
Это необычное использование блоков.