我试图在Go中创建一种类似于Express(NodeJS)路由方法的函数:
app.get("route/here/", func(req, res){
res.DoStuff()
});
在这个例子中,我想要" foo" (类型)与上述方法中的匿名函数相同。这是我使用Go的失败尝试之一:
type foo func(string, string)
func bar(route string, io foo) {
log.Printf("I am inside of bar")
// run io, maybe io() or io(param, param)?
}
func main() {
bar("Hello", func(arg1, arg2) {
return arg + arg2
})
}
我如何解决我的困境?我不应该使用类型并使用其他东西吗?我有什么选择?
答案 0 :(得分:7)
您走在正确的轨道上 - 在您使用它的上下文中为func创建类型会增加更清晰的设计意图,更重要的是增加类型安全性。
你需要修改一下你的例子才能编译:
package main
import "log"
//the return type of the func is part of its overall type definition - specify string as it's return type to comply with example you have above
type foo func(string, string) string
func bar(route string, io foo) {
log.Printf("I am inside of bar")
response := io("param", "param")
log.Println(response)
}
func main() {
bar("Hello", func(arg1, arg2 string) string {
return arg1 + arg2
})
}
答案 1 :(得分:0)
|prodid|name |city |
+------+---------+------+
|1 |"Harshit"|"VNS" |
|2 |"Mohit" |"BLR" |
|2 |"Mohit" |"RAO" |
|2 |"Mohit" |"BTR" |
|3 |"Rohit" |"BOM" |
|4 |"Shobhit"|"KLK" |