猿问

golang变量替换

如何在go中使用变量替换?


例如,我有以下代码:


debug_level := "Info"

log.Info("Debug Test")

我可以将变量debug_level用于日志函数,而不是传递直接参数吗?就像是:


debug_level := "Info"

log.${debug_level}("Debug Test")

谢谢你。


侃侃无极
浏览 486回答 2
2回答

慕码人2483693

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{}) = Infofunc 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.Infofunc main() {    logger("something")    logger = mainLogger.Error    logger("Some other thing")}输出(在Go Playground上尝试):[Info] something[Error] Some other thing
随时随地看视频慕课网APP

相关分类

Go
我要回答