为什么对用户定义的类型调用用户定义的String()会导致调用BitFlag.String"没有足够的参数?

时间:2014-11-11 08:12:52

标签: go

我列出了书中的代码" Go in Go"。 我测试了它,但它没有奏效。

error: "not enough arguments in call to 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 {
   ...
}

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

1 个答案:

答案 0 :(得分:0)

您需要在BitFlag(此处为' flag')的实例上调用字符串,而不是BitFlag类型本身。

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

请参阅此play.golang.org example

输出:

3
3(Active|Send)