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

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

golang變量替換

golang變量替換

Go
侃侃無(wú)極 2021-04-05 14:15:28
如何在go中使用變量替換?例如,我有以下代碼:debug_level := "Info"log.Info("Debug Test")我可以將變量debug_level用于日志函數(shù),而不是傳遞直接參數(shù)嗎?就像是:debug_level := "Info"log.${debug_level}("Debug Test")謝謝你。
查看完整描述

2 回答

?
慕碼人2483693

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

Go是一種靜態(tài)類(lèi)型的語(yǔ)言,如果您要按名稱(chēng)調(diào)用函數(shù)或方法,則編譯器將無(wú)法檢查您提供的參數(shù)是否與函數(shù)的簽名匹配。


而是使用函數(shù)變量:當(dāng)前保存方法或函數(shù)名稱(chēng)的變量可以是保存函數(shù)或方法value的函數(shù)類(lèi)型的變量。


假設(shè)我們具有以下日志記錄功能:


func Info(args ...interface{}) {

    fmt.Print("[Info] ")

    fmt.Println(args...)

}


func Error(args ...interface{}) {

    fmt.Print("[Error] ")

    fmt.Println(args...)

}

您可以這樣使用它:


var logger func(...interface{}) = Info


func main() {

    logger("something")

    logger = Error

    logger("Some other thing")

}

輸出將是(在Go Playground上嘗試):


[Info] something

[Error] Some other thing

還要注意,這也適用于方法,而不僅僅是功能:


type Logger struct{}


func (l Logger) Info(args ...interface{}) {

    fmt.Print("[Info] ")

    fmt.Println(args...)

}


func (l Logger) Error(args ...interface{}) {

    fmt.Print("[Error] ")

    fmt.Println(args...)

}

使用它:


var mainLogger = Logger{}


var logger func(...interface{}) = mainLogger.Info


func main() {

    logger("something")

    logger = mainLogger.Error

    logger("Some other thing")

}

輸出(在Go Playground上嘗試):


[Info] something

[Error] Some other thing


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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