我有下面的枚举,以及它的字符串函数。当我对一个特定的Animal值使用Println时,会打印出正确的名称。但是当我把它打印成一个完整的列表时,那么只会打印它们的整数值。当我打印动物园列表时,如何打印动物名称?
package main
import (
"fmt"
)
type Animal int64
const (
Goat Animal = iota
Cat
Dog
)
func (n Animal) String() string {
switch n {
case Goat:
return "Goat"
case Cat:
return "Cat"
case Dog:
return "Dog"
}
return "?"
}
type Group struct {
a, b Animal
}
type Zoo []Group
func main() {
var g1,g2 *Group
g1 = new(Group)
g1.a = Goat
g1.b = Cat
g2 = new(Group)
g2.a = Dog
g2.b = Cat
var z1 Zoo
z1 = []Group{*g1,*g2}
fmt.Println("Animal: ", Dog) // prints Dog
fmt.Println(z1) // prints [{0 1} {3 1}]
}
字符串
1条答案
按热度按时间wswtfjt71#
正如@greedy52所说,
a
和b
应该导出(这是正确的答案)。但是如果你想让它们保持
private
并有类似的输出,只需在Group
上实现String()
方法,就像这样:字符串