Go 这是一个整体论点吗?

Go 这是一个整体论点吗?,go,Go,我最近开始学习,文件中包含以下代码: v1 := router.Group("/v1") { v1.POST("/login", loginEndpoint) v1.POST("/submit", submitEndpoint) v1.POST("/read", readEndpoint) } 我阅读了方法组的,如下所示: IRouter interface { IRoutes Group(string, ...HandlerFunc) *RouterG

我最近开始学习,文件中包含以下代码:

v1 := router.Group("/v1")
{
    v1.POST("/login", loginEndpoint)
    v1.POST("/submit", submitEndpoint)
    v1.POST("/read", readEndpoint)
}
我阅读了方法组的,如下所示:

IRouter interface {
    IRoutes
    Group(string, ...HandlerFunc) *RouterGroup
}

也许我误解了语法,或者在代码中遗漏了一些东西(我在Go中很新),但它看起来像是在传递一个块作为第二个参数,这在Go中可能吗?

IRouter的Group函数是一个。这意味着可以使用任意数量的HandlerFunc类型的尾随参数调用它

go中此类函数的另一个示例是:

其签名为:


func Println(a…接口{})(n int,err error)

因此,您可以使用数量可变的参数调用它:


fmt.Println(1,2)
fmt.Println(“a”、“b”、“C”)

IRouter的组功能是一个。这意味着可以使用任意数量的HandlerFunc类型的尾随参数调用它

go中此类函数的另一个示例是:

其签名为:


func Println(a…接口{})(n int,err error)

因此,您可以使用数量可变的参数调用它:


fmt.Println(1,2)
fmt.Println(“a”、“b”、“C”)

您在
{…}
中看到的块只是一个代码块,而不是任何东西的参数。该方法是可变的,可以接受任意数量的
HandlerFunc
参数,但此处不传递任何内容

因为Go是块作用域,所以可以使用块来创建有限的变量作用域。由于块中没有声明,我认为这种模式在这里没有任何用处,只是出于样式原因,将
HandlerFunc
赋值缩进为一个组

显示代码块范围的示例:


您在
{…}
中看到的块只是一个代码块,而不是任何东西的参数。该方法是可变的,可以接受任意数量的
HandlerFunc
参数,但此处不传递任何内容

因为Go是块作用域,所以可以使用块来创建有限的变量作用域。由于块中没有声明,我认为这种模式在这里没有任何用处,只是出于样式原因,将
HandlerFunc
赋值缩进为一个组

显示代码块范围的示例:


谢谢现在我明白了,谢谢!现在我明白了
x := 42

{
    x := 3
    y := 4
    fmt.Println("x inside block:", x) // prints 3
}

fmt.Println("x outside block:", x) // prints 42
// fmt.Println(y) // undefined: y