v1 := router.Group("/v1")
{
v1.POST("/login", loginEndpoint)
v1.POST("/submit", submitEndpoint)
v1.POST("/read", readEndpoint)
}
我为方法群组引用了source code,就像这样:
IRouter interface {
IRoutes
Group(string, ...HandlerFunc) *RouterGroup
}
也许我误解了语法或者在代码中遗漏了一些东西(我在Go中很新),但看起来它传递了一个块作为第二个参数,这在Go中是否可能?
答案 0 :(得分:4)
您在getExtensions<T>()
中看到的块就是一个代码块,而不是任何参数。 Group
方法是可变参数,可以接受任意数量的$(document).ready(function(){
$('p a').embedly({
key: 'nonyodamnbusiness'
});
});
个参数,但这里没有传递任何内容。
由于Go是块作用域,因此您可以使用块来创建有限的变量作用域。由于块中没有声明,因此我认为此模式没有用,除了导致{ ... }
赋值由于样式原因而缩进为一组。
显示代码块范围的示例:
http://play.golang.org/p/Kgpw1zCC7X
HandlerFunc
答案 1 :(得分:0)
IRouter的Group函数是variadic function。这意味着可以使用HandlerFunc类型的任意数量的尾随参数调用它。
这种类型的函数的另一个例子是fmt.Println:
它的签名是:
func Println(a ...interface{}) (n int, err error)
所以你可以使用可变数量的参数调用它:
fmt.Println(1, 2)
fmt.Println("a" , "b" , "C")