如果我有一个枚举:
type Day int8
const (
Monday Day = iota
Tuesday
...
Sunday
)
Run Code Online (Sandbox Code Playgroud)
什么是更自然的 Go方式来获取它?
温控功能:
func ToString(day Day) string {
...
}
Run Code Online (Sandbox Code Playgroud)
或方法
func (day Day) String() string {
...
}
Run Code Online (Sandbox Code Playgroud)
第二个更具惯用性,因为它满足Stringer界面.
func (day Day) String() string {
...
}
Run Code Online (Sandbox Code Playgroud)
我们在Day类型not *Daytype 上声明此方法,因为我们没有更改值.
它会让你写.
fmt.Println(day)
Run Code Online (Sandbox Code Playgroud)
并获取String方法生成的值.
您自己回答这个问题的简单方法是查看 Go 标准库。
\n\n\n \n\n\n\nRun Code Online (Sandbox Code Playgroud)\n\n \n\nimport "time" \n工作日指定一周中的某一天(星期日 = 0,...)。
\n\nRun Code Online (Sandbox Code Playgroud)\n\ntype Weekday int\n\nconst (\n Sunday Weekday = iota\n Monday\n Tuesday\n Wednesday\n Thursday\n Friday\n Saturday\n)\nfunc(工作日)字符串
\n\nRun Code Online (Sandbox Code Playgroud)\n\nfunc (d Weekday) String() string\n字符串返回当天的英文名称(“Sunday”、“Monday”...)。
\n
src/time/time.go:
// A Weekday specifies a day of the week (Sunday = 0, ...).\n\ntype Weekday int\n\nconst (\n Sunday Weekday = iota\n Monday\n Tuesday\n Wednesday\n Thursday\n Friday\n Saturday\n)\n\nvar days = [...]string{\n "Sunday",\n "Monday",\n "Tuesday",\n "Wednesday",\n "Thursday",\n "Friday",\n "Saturday",\n}\n\n// String returns the English name of the day ("Sunday", "Monday", ...).\nfunc (d Weekday) String() string {\n if Sunday <= d && d <= Saturday {\n return days[d]\n }\n buf := make([]byte, 20)\n n := fmtInt(buf, uint64(d))\n return "%!Weekday(" + string(buf[n:]) + ")"\n}\nRun Code Online (Sandbox Code Playgroud)\n\n\n \n\n\nRun Code Online (Sandbox Code Playgroud)\n\n \n\nimport "fmt" \nStringer 由具有 String 方法的任何值实现,该方法定义该值的 \xe2\x80\x9cnative\xe2\x80\x9d 格式。String 方法用于将作为操作数传递的值打印到接受字符串的任何格式或打印到未格式化的打印机(例如 Print)。
\n\nRun Code Online (Sandbox Code Playgroud)\ntype Stringer interface {\n String() string\n}\n
| 归档时间: |
|
| 查看次数: |
391 次 |
| 最近记录: |