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

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

golang變量替換

golang變量替換

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

2 回答

?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

Go是一種靜態類型的語言,如果您要按名稱調用函數或方法,則編譯器將無法檢查您提供的參數是否與函數的簽名匹配。


而是使用函數變量:當前保存方法或函數名稱的變量可以是保存函數或方法value的函數類型的變量。


假設我們具有以下日志記錄功能:


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


查看完整回答
反對 回復 2021-04-19
  • 2 回答
  • 0 關注
  • 545 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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