3 回答
TA贡献1834条经验 获得超8个赞
第二个更为惯用,因为它满足Stringer接口。
func (day Day) String() string { ... }
Day
我们在非类型的类型上声明此方法,*Day
因为我们没有更改值。
它将使您能够写作。
fmt.Println(day)
并获取方法产生的值String
。
TA贡献1780条经验 获得超5个赞
您自己回答这个问题的简单方法是查看 Go 标准库。
包车时间
import "time"类型工作日
工作日指定一周中的某一天(星期日 = 0,...)。
type Weekday intconst ( Sunday Weekday = iota Monday Tuesday Wednesday Thursday Friday Saturday )func(工作日)字符串
func (d Weekday) String() stringString 返回当天的英文名称("Sunday", "Monday", ...)。
src/time/time.go
:
// A Weekday specifies a day of the week (Sunday = 0, ...).
type Weekday int
const (
Sunday Weekday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
)
var days = [...]string{
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
}
// String returns the English name of the day ("Sunday", "Monday", ...).
func (d Weekday) String() string {
if Sunday <= d && d <= Saturday {
return days[d]
}
buf := make([]byte, 20)
n := fmtInt(buf, uint64(d))
return "%!Weekday(" + string(buf[n:]) + ")"
}
包 fmt
import "fmt"
纵梁型
Stringer 由具有 String 方法的任何值实现,该方法定义该值的“本机”格式。String 方法用于打印作为操作数传递给任何接受字符串的格式或未格式化打印机(如 Print)的值。
type Stringer interface { String() string }
TA贡献1921条经验 获得超9个赞
也许我的回答可能会影响性能,但在处理大量枚举时,拥有映射将是一个糟糕的想法类型类别字符串
type Category string
const (
AllStocks Category = "all"
WatchList Category = "watch_list"
TopGainer Category = "top_gainer_stock"
TopLoser Category = "top_loser_stock"
FiftyTwoWeekHigh Category = "high_stocks"
FiftyTwoWeekLow Category = "low_stocks"
HotStocks Category = "hot_stock"
MostTraded Category = "most_active_stock"
)
func (c Category) toString() string {
return fmt.Sprintf("%s", c)
}
这是枚举的最简单的字符串格式化路径。
- 3 回答
- 0 关注
- 130 浏览
添加回答
举报