登录
首页 >  Golang >  Go问答

语法规范中的对象初始化

来源:stackoverflow

时间:2024-03-19 09:36:26 435浏览 收藏

在 Go 语言中,语法规范对对象初始化进行了严格的规定。虽然可以一次性初始化多个字段,但必须按照特定顺序进行,并处理潜在的错误。如果某个字段的初始化依赖于另一个字段,则必须先初始化依赖字段。此外,不能在初始化程序中使用多值返回函数,因为它们会引发错误,而初始化程序不能处理错误。因此,简化对象初始化时,必须确保遵循这些语法规范,否则将导致编译错误。

问题内容

我有以下工作代码

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,
    }

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


解决方案


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

到这里,我们也就讲完了《语法规范中的对象初始化》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>