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

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

將 CIDR 塊轉換為 net.IP 類型

將 CIDR 塊轉換為 net.IP 類型

Go
慕工程0101907 2023-07-31 16:18:26
我有這段代碼:// redacted var (        cidr        net.IPNet           createCmd   = &cobra.Command{            Use:   "create",            Short: "create would create something useful",            Long:  "create submits a request for something useful creation based on parameters provided ",            Run: func(cmd *cobra.Command, args []string) {                //region comes from rootCmd                log.Infof("cidr: %v, ipmask: %v", cidr, cidr.IP.DefaultMask())            },        }    )func init() {    createCmd.Flags().IPNetVar(&cidr, "vpc-cidr", cidr, "Vpc cidr range")}// redacted輸出:./somethinguseful create --cidr 192.168.100.0/24INFO[0000] cidr: {192.168.100.0 ffffff00}, ipmask: ffffff00我無法理解命令行參數 192.168.100.0/24 在哪個階段被轉換為 net.IP 和掩碼。查看IPNet代碼func newIPNetValue(val net.IPNet, p *net.IPNet) *ipNetValue {    *p = val    return (*ipNetValue)(p) }// allocates default to pointer to net.IPNet if provided沒有任何代碼可以將輸入轉換為顯示的輸出。如何根據 cidr 塊的輸入計算并打印掩碼值。請任何指點。
查看完整描述

1 回答

?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

好吧,這在根上用作標志,而標志需要flag.Value接口。該接口所需要的只是它是 aStringer并且它實現了Set(string) error

ipNetValue正是這樣做的

func (ipnet ipNetValue) String() string {

? ? n := net.IPNet(ipnet)

? ? return n.String()

}


func (ipnet *ipNetValue) Set(value string) error {

? ? _, n, err := net.ParseCIDR(strings.TrimSpace(value))

? ? if err != nil {

? ? ? ? return err

? ? }

? ? *ipnet = ipNetValue(*n)

? ? return nil

}

查看完整回答
反對 回復 2023-07-31
  • 1 回答
  • 0 關注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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