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

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

在 Go 中使用位掩碼(Go enumeration with iota)

在 Go 中使用位掩碼(Go enumeration with iota)

Go
ITMISS 2023-06-01 18:04:11
有點卡住了。我正在嘗試找出如何使用 go 枚舉從 const 獲取位掩碼值。比如key是5,也就是0101位,就是dog和fish。獲取位值(1、2、4、8、16、32、64 等)以便我可以選擇字符串值并返回一組動物的最簡單方法是什么?type Key intconst (    Dog Key = 1 << iota    Cat    Fish    Horse    Snake    Rabbit    Lion    Rino    Hedgehog)一直在閱讀,但我無法解決這個問題。
查看完整描述

2 回答

?
慕姐4208626

TA貢獻1852條經(jīng)驗 獲得超7個贊

聲明一段字符串,其中字符串對應(yīng)于常量名稱:


var animalNames = []string{

? ? "Dog",

? ? "Cat",

? ? "Fish",

? ? "Horse",

? ? "Snake",

? ? "Rabbit",

? ? "Lion",

? ? "Rino",

? ? "Hedgehog",

}

要獲取位的名稱,請循環(huán)遍歷名稱。如果設(shè)置了相應(yīng)的位,則將名稱添加到結(jié)果中:


func Names(k Key) []string {

? ? var result []string

? ? for i := 0; i < len(animalNames); i++ {

? ? ? ? if k&(1<<uint(i)) != 0 {

? ? ? ? ? ? result = append(result, animalNames[i])

? ? ? ? }

? ? }

? ? return result

}

在操場上運行它。

如果將常量更改為位索引而不是位值,則可以使用stringer實用程序創(chuàng)建一個func (k Key) String() string.?這是此更改的代碼:

type Key uint


const (

? ? Dog Key = iota

? ? Cat

? ? Fish

? ? Horse

? ? Snake

? ? Rabbit

? ? Lion

? ? Rino

? ? Hedgehog

)


//go:generate stringer -type=Key


func Names(k Key) []string {

? ? var result []string

? ? for animal := Dog; animal <= Hedgehog; animal++ {

? ? ? ? if k&(1<<animal) != 0 {

? ? ? ? ? ? result = append(result, animal.String())

? ? ? ? }

? ? }

? ? return result

}


查看完整回答
反對 回復(fù) 2023-06-01
?
LEATH

TA貢獻1936條經(jīng)驗 獲得超7個贊

使用 iota 創(chuàng)建位掩碼值 Iota 在創(chuàng)建位掩碼時非常有用。例如,為了表示可能是安全的、經(jīng)過身份驗證的和/或就緒的網(wǎng)絡(luò)連接狀態(tài),我們可以創(chuàng)建如下所示的位掩碼:


package main


import "fmt"


const (

    Secure = 1 << iota // 0b001

    Authn              // 0b010

    Ready              // 0b100

)


// 0b011: Connection is secure and authenticated, but not yet Ready


func main() {

    ConnState := Secure | Authn

    fmt.Printf(`    Secure:    0x%x (0b%03b)

    Authn:     0x%x (0b%03b)

    ConnState: 0x%x (0b%03b)

    `, Secure, Secure, Authn, Authn, ConnState, ConnState)

}


查看完整回答
反對 回復(fù) 2023-06-01
  • 2 回答
  • 0 關(guān)注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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