【问题标题】:syntax question for object initialization [duplicate]对象初始化的语法问题[重复]
【发布时间】:2021-05-23 13:34:19
【问题描述】:

我有以下工作代码

    serverFile, _ := os.OpenFile("server.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
    debugFile, _ := os.OpenFile("debug.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)

    Logger = &BufferedLogger{
        ServerWriter:    serverFile,
        DebugWriter:     debugFile,
        BufferSize:      100,
    }

如果可能的话,我喜欢简化。我试过了

    Logger = &BufferedLogger{
        ServerWriter, _:    os.OpenFile("server.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644),
        DebugWriter, _:     os.OpenFile("debug.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644),
        BufferSize:      100,
    }

这是错误的语法。有人可以给我一个提示来解决它,还是不可能?

【问题讨论】:

    标签: go syntax


    【解决方案1】:

    不,您不能在一个语句中完成所有操作。这是有原因的:你应该处理错误,而不是忽略它。任何可能导致错误的函数都将具有多值返回,因此您不能将其用作另一个函数或初始化程序的参数 - 只有在多值赋值中,您可以捕获并检查错误。

    【讨论】:

    • 感谢您的帮助。
    猜你喜欢
    • 2016-02-26
    • 2021-04-07
    • 2010-09-27
    • 2012-01-17
    • 2016-01-06
    • 2011-03-25
    • 2018-02-15
    • 1970-01-01
    • 2015-12-03
    相关资源
    最近更新 更多