Golang:链接函数返回自己

时间:2016-10-20 04:13:08

标签: function go types casting wrapper

此代码不起作用,因为类型数量不是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)
    }
}

1 个答案:

答案 0 :(得分:2)

函数foo()期望数量类型作为参数,您所要做的就是将 x 作为金额传递,如下所示:y := foo(amount(x))

工作示例:https://play.golang.org/p/xkbp43vjyA

在Go中,类型非常重要,例如,如果您要创建类型数量,那是因为您可能希望添加的行为多于 int 定义方法,所以如果您的函数正在接收金额,无论它是否与int兼容,您都必须通过该类型。