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

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

在go中聲明一個(gè)沒(méi)有值的全局變量

在go中聲明一個(gè)沒(méi)有值的全局變量

Go
Helenr 2023-05-08 15:05:52
我有一個(gè)程序需要 1 個(gè)或 2 個(gè)參數(shù),具體取決于用戶想要運(yùn)行的內(nèi)容var (   clientSet = tools.NewClientSet(os.Args[2]))func main {    if os.Args[1] == "validate" {       // run validate function, no need for user to have os.Args[2]    }else if os.Args[1] == "sync" {      // run sync function that requires os.Args[2]    }}func foo{   tools.Manage(clientSet)}我需要clientSet變量是全局的,但如果用戶只想使用驗(yàn)證函數(shù),我不需要用戶擁有 os.Args[2]。將函數(shù)放在clientSet里面main()會(huì)使我的foo()函數(shù)損壞,并且我無(wú)法聲明一個(gè)具有空值的變量。所以我希望我的用戶能夠順利go run main.go validate運(yùn)行g(shù)o run main.go sync production。*生產(chǎn)是一個(gè)任意值我可以讓我的用戶運(yùn)行來(lái)go run main.go validate _解決這個(gè)問(wèn)題,但那會(huì)很不雅觀。解決這個(gè)問(wèn)題的最佳方法是什么?
查看完整描述

3 回答

?
呼啦一陣風(fēng)

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

在這種情況下,我什至不認(rèn)為需要全局變量。您可以讓同步功能接受一個(gè)ClientSeteg func sync(c ClientSet)。但是如果你真的需要全局變量,那么你不應(yīng)該這樣做,除非你希望你的程序在沒(méi)有參數(shù)存在時(shí)發(fā)生恐慌。


var (

   clientSet = tools.NewClientSet(os.Args[2])

)

您應(yīng)該做的是為它分配一個(gè)默認(rèn)值或您的類(lèi)型的零值。


var (

   clientSet tools.ClientSet

)

您的主要功能看起來(lái)像這樣:


var (

    clientSet tools.ClientSet

)


func main() {


    if len(os.Args) < 2 {

        os.Exit(1)

    }


    switch os.Args[1] {

    case "validate":

        validate()


    case "sync":


        if len(os.Args) < 3 {

            os.Exit(1)

        }


        clientSet = tools.NewClientSet(os.Args[2])

        sync()

    default:

        // place your default case here

    }


}

盡管如此,我還是建議您將 a 傳遞ClientSet給 sync 函數(shù),因?yàn)樗鼤?huì)避免使用全局變量。


查看完整回答
反對(duì) 回復(fù) 2023-05-08
?
瀟瀟雨雨

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

答案通常是不使用全局變量。取而代之的是foo接受一個(gè)參數(shù)foo(clientSet ClientSet)并僅在需要時(shí)實(shí)例化它。



查看完整回答
反對(duì) 回復(fù) 2023-05-08
?
收到一只叮咚

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

只需使用len(os.Args)函數(shù)


var (

    clientSet tools.ClientSet

)


func main() {

    if len(os.Agrs) == 1 {

        // just the file name

    } else if len(os.Args) == 2 {

        if os.Args[1] == "validate" {

            // run validate function, no need for user to have os.Args[2]

        } else if os.Args[1] == "sync" {

            // sync with no argument show error

        }

    } else if len(os.Args) == 3 {

        if os.Args[1] == "validate" {

            clientSet = tools.NewClientSet(os.Args[2])

        } else {

            // non validate with the second arg

        }

    } else {

        // else, if required

    }

}

盡管我建議您不要使用全局變量。盡可能避免。


查看完整回答
反對(duì) 回復(fù) 2023-05-08
  • 3 回答
  • 0 關(guān)注
  • 174 瀏覽
慕課專(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)