Синтаксический вопрос из документации `gin-gonic` - PullRequest
0 голосов
/ 26 декабря 2018

Я развивался в 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 Ответ

0 голосов
/ 26 декабря 2018

Спецификация языка программирования Go

Blocks

Блок - это, возможно, пустая последовательность объявлений и операторов в соответствующей скобкескобки.

Объявления и область действия

Go имеет лексическую область, используя блоки.


Например, метод v1.POSTоператоры вызова формируют блок:

// Simple group: v1
v1 := router.Group("/v1")
{
    v1.POST("/login", loginEndpoint)
    v1.POST("/submit", submitEndpoint)
    v1.POST("/read", readEndpoint)
}

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

...