Этот код не работает, поскольку количество типов не является int, я хочу знать, почему go не знает, как обращаться с этим нестандартным типом? Я знаю, что var x amount = 8
исправит эту функцию, потому что она хочет получить сумму, но мой учитель настаивает, что обе эти функции эквивалентны на 100%, на мой взгляд, они не из-за вышеупомянутой ошибки типа.Golang: функция цепочки для возврата
Я надеюсь, что кто-то может мне помочь.
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)
}
}
Я знаю это, я добавил, что это тоже исправить функцию, var x amount = 8 –
Итак, важно правило, чтобы понять о константах чисел, таких как '8'. У них вообще нет типа, если они сами по себе, и компилятор будет принуждать их к любому типу, который действительно способен содержать номер. Однако, как только они назначены переменной, этот _variable_ имеет конкретный и неизменяемый тип и должен быть явно преобразован в любой другой конкретный (неинтерфейсный) тип. Назначение shortform 'x: = 8' эквивалентно' var x = 8', с типом, который ушел и оставил компилятору. В отсутствие типа целочисленные значения по умолчанию имеют тип 'int'. – Kaedys
Это может оказать влияние на циклы 'for', между прочим. Форма 'для x: = 0; x
Kaedys