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

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

如何在 Golang 中借助標(biāo)志使用隨機(jī)參數(shù)

如何在 Golang 中借助標(biāo)志使用隨機(jī)參數(shù)

Go
吃雞游戲 2023-04-24 16:22:54
我希望來自控制臺的輸入是匿名參數(shù)。我目前的執(zhí)行方式是./app -infc=eth0 -ip=192.168.0.1我不想要這個,因?yàn)槲倚枰@個應(yīng)用程序是通用的,這樣我也可以將它用于其他目的。我希望 CLI 是這樣的./app -firstparam={{infc},eth0} -secondparam={{ip},192.168.0.1}所以這基本上應(yīng)該通過讀取參數(shù)中的兩列來工作。所以它應(yīng)該將參數(shù)解析為內(nèi)部鍵值對需要有關(guān)如何將每個參數(shù)存儲為鍵值對并稍后單獨(dú)使用它們的幫助
查看完整描述

2 回答

?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個贊

這是一個準(zhǔn)系統(tǒng)示例,讓您了解如何處理 os.Args


$ go run main.go --foo asdf --bar xxx --baz ccc

map[--foo:asdf --bar:xxx --baz:ccc]

jsandrew-Mac:osarg jsandrew$ cat main.go

package main


import (

    "fmt"

    "os"

)


func manyRandomArg() map[string]string {

    rv := make(map[string]string)

    for ix, x := range os.Args {

        if x[:2] == "--" {

            rv[x] = os.Args[ix+1]

        }

    }

    return rv

}


func main() {

    fmt.Printf("%v\n", manyRandomArg())

}


查看完整回答
反對 回復(fù) 2023-04-24
?
哆啦的時光機(jī)

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

package main


import (

    "fmt"

    "io/ioutil"

    "log"

    "os"

    "regexp"

    "strings"

)


var key0, key1, key2, key3, key4, filename string

var fileext = regexp.MustCompile(`([a-z]+)\.yaml`)


func manyRandomArg() map[string]string {

    rv := make(map[string]string)

    for ix, x := range os.Args {

        if x[:2] == "--" {

            rv[x] = os.Args[ix+1]

        }

    }

    return rv

}


func main() {

    fmt.Printf("\n%v\n", manyRandomArg())

    readargs()

}

func readargs() {


    rv := manyRandomArg()

    keys := make([]string, 0, len(rv))

    for key, _ := range rv {

        keys = append(keys, key)

    }

    // Convert map to slice of values.

    values := []string{}

    for _, value := range rv {

        values = append(values, value)

    }


    for keys, values := range rv {

        fmt.Printf("key[%s] value[%s]\n", keys, values)

    }

    if fileext.MatchString(values[0]) {

        fmt.Printf("Value %s\n", values[0])

        filename = values[0]

    } else if fileext.MatchString(values[1]) {

        fmt.Printf("Value %s\n", values[1])

        filename = values[1]

    } else if fileext.MatchString(values[2]) {

        fmt.Printf("Value %s\n", values[2])

        filename = values[2]

    } else if fileext.MatchString(values[3]) {

        fmt.Printf("Value %s\n", values[3])

        filename = values[3]

    } else if fileext.MatchString(values[4]) {

        fmt.Printf("Value %s\n", values[4])

        filename = values[4]

    } else {

        log.Fatal("index 4 fail")

        os.Exit(1)

    }


    b, err := ioutil.ReadFile(filename) // just pass the file name

    if err != nil {

        fmt.Print(err)

    }

    str := string(b) // convert content to a 'string'

    key0 = trimLeftChars(keys[0], 2)

    key1 = trimLeftChars(keys[1], 2)

    key2 = trimLeftChars(keys[2], 2)

    key3 = trimLeftChars(keys[3], 2)

    key4 = trimLeftChars(keys[4], 2)


    // Create replacer with pairs as arguments.

    r := strings.NewReplacer(key0, values[0], key1, values[1], key2, values[2], key3, values[3], key4, values[4])


    // Replace all pairs.

    result := r.Replace(str)

    fmt.Println(result)


    newContents := []byte(result)

    err = ioutil.WriteFile("new3.yaml", newContents, 0664)

    if err != nil {

        panic(err)

    }

}

func trimLeftChars(s string, n int) string {

    m := 0

    for i := range s {

        if m >= n {

            return s[i:]

        }

        m++

    }

    return s[:0]

}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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