此代码不起作用,因为类型数量不是int,我想知道为什么go不知道如何处理这种自定义类型?
我知道
var x amount = 8
将修复此功能,因为它需要一定金额,但我的老师坚持认为这两个函数都是100%等效的,在我看来它们不是因为前面提到的类型错误。
我希望有人可以帮助我。
type amount int
func main() {
x := 8
y := foo(x)
fmt.Println(y)
}
func foo(x amount) amount {
return x * x
}
此代码确实有效,似乎是同一种组合。
func Auth1(h http.HandlerFunc) http.HandlerFunc {
return func(w http.ResponseWriter, req *http.Request){
fmt.Println("here is the authorization code")
c := mcookie.GetCookie(req)
cl := db[c.Value]
if !cl.Loggedin {
http.Redirect(w, req, "/", http.StatusSeeOther)
}
h(w, req)
}
}
答案 0 :(得分:2)
函数foo()期望数量类型作为参数,您所要做的就是将 x 作为金额传递,如下所示:y := foo(amount(x))
工作示例:https://play.golang.org/p/xkbp43vjyA
在Go中,类型非常重要,例如,如果您要创建类型数量,那是因为您可能希望添加的行为多于 int 定义方法,所以如果您的函数正在接收金额,无论它是否与int兼容,您都必须通过该类型。