Why a call to a user-defined String() for user-defined type throws "not enough arguments in call to BitFlag.String"?

huangapple go评论88阅读模式
英文:

Why a call to a user-defined String() for user-defined type throws "not enough arguments in call to BitFlag.String"?

问题

我列出了《Go编程》一书中的代码。
我测试了它,但它没有正常工作。

错误信息:"调用BitFlag.String时参数不足"

Goplayground代码:http://play.golang.org/p/FG23LdS_xK

type BitFlag int

func main() {
    flag := Active | Send
    BitFlag.String();
}

func (flag BitFlag) String() string {
   ...
}

为什么我会看到这个错误消息?

英文:

I list the code from the book "Programming in Go".
I test it but it didn't work well.

error: "not enough arguments in call to BitFlag.String"

Goplayground Code: http://play.golang.org/p/FG23LdS_xK

type BitFlag int

func main() {
    flag := Active | Send
    BitFlag.String();
}

func (flag BitFlag) String() string {
   ...
}

Why do I see this error message?

答案1

得分: 0

你需要在BitFlag的实例(这里是'flag')上调用String方法,而不是在BitFlag类型本身上调用。

flag := Active | Send
fmt.Println(strconv.Itoa(int(flag)))
fmt.Println(flag.String())

可以参考这个[kbd]play.golang.org[/kbd]的示例。

输出:

3
3(Active|Send)
英文:

You need to call String on an instance of BitFlag (here 'flag'), not on the BitFlag type itself.

flag := Active | Send
fmt.Println(strconv.Itoa(int(flag)))
fmt.Println(flag.String())

See this <kbd>play.golang.org</kbd> example.

Output:

3
3(Active|Send)

huangapple
  • 本文由 发表于 2014年11月11日 16:12:51
  • 转载请务必保留本文链接:https://go.coder-hub.com/26860362.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定