Go 枚舉 資料收集

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

方法1:直接手寫代碼:(參考:http://golang-basic.blogspot.com/2014/07/step-by-step-guide-to-declaring-enums.html)

package mainimport "fmt"// A Month specifies a month of the year (January = 1, ...).type Month intconst (January Month = 1 + iotaFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember)var months = [...]string{"January","February","March","April","May","June","July","August","September","October","November","December",}// String returns the English name of the month ("January", "February", ...).func (m Month) String() string {return months[m-1]}func main() {month := Decemberif month == December {fmt.Println("Found a December")}// %!v(PANIC=runtime error: index out of range)month = month + Month(2)// fmt.Println(month)month = January + Month(2)fmt.Println(month)month++fmt.Println(month)day := 34month = Month(day % 31)fmt.Println(month)val := int(month) + 4fmt.Println(val)month = Month(val) + 1fmt.Println(month)}

二、通過工具產生代碼

聲明enums.go

package maintype Month intconst (January Month = 1 + iotaFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember)

命令執行:

go get -v -u golang.org/x/tools/cmd/stringer (第一次使用需下載,×翻) stringer -type=Month

自動產生:(參考:http://godoc.org/golang.org/x/tools/cmd/stringer)

  建立:month_string.go

// generated by stringer -type=Month; DO NOT EDITpackage mainimport "fmt"const _Month_name = "JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember"var _Month_index = [...]uint8{0, 7, 15, 20, 25, 28, 32, 36, 42, 51, 58, 66, 74}func (i Month) String() string {i -= 1if i < 0 || i+1 >= Month(len(_Month_index)) {return fmt.Sprintf("Month(%d)", i+1)}return _Month_name[_Month_index[i]:_Month_index[i+1]]}

使用:

package mainimport ("fmt")func main() {month := Januaryfmt.Printf("%d\n", month)fmt.Println(January)month = month + Month(2)fmt.Printf("%d\n", month)fmt.Println(month)}

感覺都有點小複雜 :)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.