第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

有沒有辦法迭代用作枚舉的常量

有沒有辦法迭代用作枚舉的常量

C#
不負(fù)相思意 2021-11-15 17:02:45
我正在嘗試在 golang 中使用枚舉,如下所示。我正在努力尋找一種簡單的方法來迭代常量值列表。golang 中迭代用作枚舉的常量值的常見做法是什么。謝謝!type DayOfWeek intconst(       Monday DayOfWeek = iota       Tuesday       Wednesday       Thursday       Friday       Saturday       Sunday      )在 Java 中,我們可以迭代如下。public enum DayOfWeek {    MONDAY,     TUESDAY,    WEDNESDAY,    THURSDAY,    FRIDAY,    SATURDAY,    SUNDAY}for (DayOfWeek day: DayOfWeek.values()) {   // code logic}
查看完整描述

2 回答

?
白豬掌柜的

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊

沒有直接的方法可以在運(yùn)行時(shí)枚舉命名類型的值/實(shí)例,無論是變量還是常量,除非您專門定義了一個(gè)列出它們的切片。這由枚舉類型的定義者或用戶決定。


package main


import (

    "fmt"

    "time"

)


var Weekdays = []time.Weekday{

    time.Sunday,

    time.Monday,

    time.Tuesday,

    time.Wednesday,

    time.Thursday,

    time.Friday,

    time.Saturday,

}


func main() {

    for _, day := range Weekdays {

            fmt.Println(day)

    }

}

為了能夠在運(yùn)行時(shí)動(dòng)態(tài)生成此列表,例如通過反射,鏈接器必須保留所有包中定義的所有符號,就像 Java 所做的那樣。golang-nuts 小組討論了這個(gè),關(guān)于從包導(dǎo)出的名稱和函數(shù),包常量定義的超集。https://groups.google.com/forum/#!topic/golang-nuts/M0ORoEU115o


當(dāng)且僅當(dāng)程序引用它時(shí),語言才有可能包含用于在編譯時(shí)生成此列表的語法糖。但是,迭代順序應(yīng)該是什么?如果您的一周從星期一開始,那么我定義的列表不是很有幫助;您必須定義自己的切片,以涵蓋從星期一到星期日的天數(shù)。


查看完整回答
反對 回復(fù) 2021-11-15
?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

你可以在沒有反思的情況下做到這一點(diǎn)。


首先Stringer在編譯時(shí)使用go generate. 這將創(chuàng)建一個(gè)文件[filename]_string.go,其中包含將_[structname]_map枚舉變量名稱作為字符串引用的枚舉值映射。此映射是私有的,因此只需在包初始化時(shí)將其分配給公共映射即可。


var EnumMap map[Enum]string


func init() {

    EnumMap = _Enum_map

}


type Enum uint


//go:generate go run golang.org/x/tools/cmd/stringer -type=Enum


const (

    One Enum = iota

    Two

)

然后你可以簡單地遍歷地圖的鍵。


查看完整回答
反對 回復(fù) 2021-11-15
  • 2 回答
  • 0 關(guān)注
  • 206 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號