GoLang方法为什么会出现编译错误?

时间:2017-07-20 12:32:50

标签: go methods compiler-errors

我正在尝试GoLang中的方法。我是新手,所以如果我问愚蠢的问题,请纠正我。 link表示我们可以将方法编写为普通函数。但是当我尝试使用代码时,它会给我编译错误

a.sq undefined (type MyFloat has no field or method sq)

以下代码中的注释行正如预期的那样工作。 请帮我。以下是我的代码:

package main

import (
    "fmt"
)

type MyFloat float64

func sq (f MyFloat) string {
    return fmt.Sprintln("The square is: ", f*f)
}

/*func (f MyFloat) sq() string {
    return fmt.Sprintln("The square is: ", f*f)
}*/

func main() {

    a := MyFloat(2.0)
    fmt.Println(a.sq())
}

1 个答案:

答案 0 :(得分:2)

您将sq声明为函数,而不是方法。如果您要将sq附加到MyFloat,则应将其声明为:

func (f MyFloat) sq() string {
    return fmt.Sprintln("The square is: ", f*f)
}

这样您就可以a.sq()