Синтаксический вопрос из документации `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)
}

Это необычное использование блоков.

Другие вопросы по тегам