如果我有一个枚举:
with()
还有什么 natural Go 方法来获取字符串?
功能:
type Day int8
const (
Monday Day = iota
Tuesday
...
Sunday
)
或方法
func ToString(day Day) string {
...
}
答案 0 :(得分:9)
第二个更习惯,因为它满足Stringer界面。
func (day Day) String() string {
...
}
因为我们没有更改值,所以我们以Day
类型而不是*Day
类型声明此方法。
它将使您能够书写。
fmt.Println(day)
并获取由String
方法产生的值。
答案 1 :(得分:4)
您自己回答此问题的简单方法是查看Go标准库。
import "time"
工作日指定一周中的一天(星期日= 0,...)。
type Weekday int const ( Sunday Weekday = iota Monday Tuesday Wednesday Thursday Friday Saturday )
func(工作日)字符串
func (d Weekday) String() string
String返回当天的英文名称(“ 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:]) + ")"
}
import "fmt"
Stringer由具有String方法的任何值实现, 定义该值的“本机”格式。使用String方法 打印作为操作数传递的值,使其接受任何格式 字符串或未格式化的打印机(例如“打印”)。
type Stringer interface { String() string }