亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Go 中獲取枚舉的字符串表示的慣用方法是什么?

在 Go 中獲取枚舉的字符串表示的慣用方法是什么?

Go
SMILET 2023-04-24 16:56:44
如果我有一個枚舉:type Day int8const (    Monday Day = iota    Tuesday    ...    Sunday)有什么更自然的 Go方式來獲取字符串呢?功能:func ToString(day Day) string {   ...}或方法func (day Day) String() string  {    ... }
查看完整描述

3 回答

?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

第二個更為慣用,因為它滿足Stringer接口。

func?(day?Day)?String()?string??{
????...?
}

Day我們在非類型的類型上聲明此方法,*Day因為我們沒有更改值。

它將使您能夠寫作。

fmt.Println(day)

并獲取方法產生的值String


查看完整回答
反對 回復 2023-04-24
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

您自己回答這個問題的簡單方法是查看 Go 標準庫。


包車時間

import?"time"

類型工作日

工作日指定一周中的某一天(星期日 = 0,...)。

type?Weekday?intconst?(
????????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:]) + ")"

}

包 fmt

import?"fmt"

縱梁型

Stringer 由具有 String 方法的任何值實現,該方法定義該值的“本機”格式。String 方法用于打印作為操作數傳遞給任何接受字符串的格式或未格式化打印機(如 Print)的值。

type?Stringer?interface?{
????????String()?string
????????}


查看完整回答
反對 回復 2023-04-24
?
郎朗坤

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)

}

這是枚舉的最簡單的字符串格式化路徑。


查看完整回答
反對 回復 2023-04-24
  • 3 回答
  • 0 關注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號