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

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

如何使用結(jié)構(gòu)迭代yml部分?

如何使用結(jié)構(gòu)迭代yml部分?

Go
侃侃無(wú)極 2022-09-12 20:49:48
我用毒蛇。我正在嘗試從具有yml配置的結(jié)構(gòu)中獲取信息。type Config struct {    Account       User           `mapstructure:"user"`      }type User struct {    Name       string           `mapstructure:"name"`    Contacts   []Contact        `mapstructure:"contact"`}type Contact struct {    Type          string          `mapstructure:"type"`    Value         string          `mapstructure:"value"`}func Init() *Config {    conf := new(Config)    viper.SetConfigType("yaml")    viper.ReadInConfig()    ...    viper.Unmarshal(conf)    return conf}...config := Init()...for _, contact := range config.Account.Contacts {   type := contact.type   vlaue := contact.value}和配置user:  name: John  contacts:    email:      type: email      value: test@test.com    skype:      type: skype      value: skypeacc我可以獲得這樣的結(jié)構(gòu)項(xiàng)目嗎?我無(wú)法獲得這樣的聯(lián)系人數(shù)據(jù)??赡軉幔?
查看完整描述

2 回答

?
瀟湘沐

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

我認(rèn)為唯一重要的問(wèn)題是,在數(shù)據(jù)結(jié)構(gòu)中,您已經(jīng)聲明為列表,但在YAML文件中,它是一個(gè)字典。如果像這樣構(gòu)建輸入文件:Contacts


user:

  name: John

  contacts:

    - type: email

      value: test@test.com

    - type: skype

      value: skypeacc

然后你可以像這樣閱讀它:


package main


import (

    "fmt"


    "github.com/spf13/viper"

)


type Config struct {

    User User

}


type User struct {

    Name     string

    Contacts []Contact

}


type Contact struct {

    Type  string

    Value string

}


func main() {

    var cfg Config


    viper.SetConfigName("config")

    viper.AddConfigPath(".")

    err := viper.ReadInConfig()

    if err != nil {

        panic(err)

    }

    viper.Unmarshal(&cfg)

    fmt.Println("user: ", cfg.User.Name)

    for _, contact := range cfg.User.Contacts {

        fmt.Println("  ", contact.Type, ": ", contact.Value)

    }

}

上面的代碼可以按原樣運(yùn)行;您應(yīng)該能夠?qū)⑵浞湃胛募胁?gòu)建它。當(dāng)我運(yùn)行上面的示例時(shí),我得到作為輸出:


user:  John

   email :  test@test.com

   skype :  skypeacc


查看完整回答
反對(duì) 回復(fù) 2022-09-12
?
青春有我

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

如果我得到你想要實(shí)現(xiàn)的目標(biāo)是正確的,并且基于你提供的循環(huán);for


您實(shí)際需要的是一個(gè) YAML 序列,它是一個(gè)數(shù)組。所以你的最終YAML文件應(yīng)該看起來(lái)像;

user:

  name: John

  contacts:

      - type: email

        value: test@test.com

      - type: skype

        value: skypeacc

      - type: email

        value: joe@example.com

此外,切片上的標(biāo)簽中有拼寫(xiě)錯(cuò)誤。它應(yīng)該與 YAML 密鑰匹配;Contacts

type User struct {

   Name     string    `mapstructure:"name"`

   Contacts []Contact `mapstructure:"contacts"`

}

如果您希望保留原始的 YAML 文件結(jié)構(gòu),則必須為每個(gè) YAML 鍵提供一個(gè)標(biāo)記(和相應(yīng)的結(jié)構(gòu)字段),因此不可能開(kāi)箱即用地循環(huán)它,因?yàn)?并且 被解析為結(jié)構(gòu)字段。原始 YAML 文件的結(jié)構(gòu)示例如下:emailskype


type Config struct {

    Account User `mapstructure:"user"`

}


type User struct {

    Name     string   `mapstructure:"name"`

    Contacts Contacts `mapstructure:"contacts"`

}


type Contacts struct {

    Email Contact `mapstructure:"email"`

    Skype Contact `mapstructure:"skype"`

}


type Contact struct {

    Type  string `mapstructure:"type"`

    Value string `mapstructure:"value"`

}


查看完整回答
反對(duì) 回復(fù) 2022-09-12
  • 2 回答
  • 0 關(guān)注
  • 108 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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