为什么要在init()中检查nil

lim

我正在阅读本文,在其示例中提供了以下代码:

var templates map[string]*template.Template

// Load templates on program initialisation
func init() {
    if templates == nil {
        templates = make(map[string]*template.Template)
    }

为什么要签if templates == nilinit()在执行的这一点上是否总是一样的?

松饼上衣:

没有理由在本文提供的代码中检查nil。还有其他构造代码的方法。

选项1:

var templates = map[string]*template.Template{}

func init() {
    // code following the if statement from the function in the article
}

选项2:

var templates = initTemplates()

func initTemplates() map[string]*template.Template{} {
    templates := map[string]*template.Template{}
    // code following the if statement from the function in the article
    return templates
}

选项3:

func init() {
    templates = make(map[string]*template.Template)
    // code following the if statement from the function in the article
}

您将在Go代码中看到所有这些方法。我更喜欢第二个选项,因为它可以很清楚地templates在函数中进行初始化initTemplates其他选项需要四处查看,以找出templates初始化位置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么nil检查失败

来自分类Java

为什么要在未检查的异常中将检查的异常包装在lambda中?

来自分类Dev

为什么要在def __init __(self,n)-> None:中使用->?

来自分类Dev

为什么我们要在OnCreate中检查重叠的片段?(来自文档)

来自分类Dev

AngularJS:为什么要在`$ watch`监听器中检查newValue是否与oldValue相同?

来自分类Dev

为什么要在此代码中检查“如果id不为None”?

来自分类Dev

Flask为什么要在其json模块的json.dumps('/')`中检查`'\\ /'?

来自分类Dev

为什么要在等待后检查WIFEXITED以杀死Linux系统调用中的子进程?

来自分类Dev

为什么Java Enum需要在compareTo方法中检查类和declaringClass

来自分类Dev

为什么要在检查器中脚本的顶部将int变量值设置为0,为什么值是1?

来自分类Dev

为什么要在搬家之前检查是否空了?

来自分类Dev

为什么要在函数的参数中赋值?

来自分类Python

为什么要在Python中关闭文件?

来自分类Dev

为什么要在RabbitMQ中声明交换?

来自分类Dev

为什么需要在结构中填充?

来自分类Dev

在Objective-C中,为什么要检查self = [super init]是否不为零?

来自分类Dev

为什么在Lua中“ not nil”返回true?

来自分类Dev

为什么()在Ruby中返回nil?

来自分类Dev

在Swift中,为什么“让_ = this”要比“ this!= nil”更快?

来自分类Dev

为什么(a,b = [nil,nil])在Ruby中为真?

来自分类Dev

为什么在类中需要Thread .__ init __()?

来自分类Dev

为什么__init__在python中失败

来自分类Dev

为什么std :: ios_base :: Init中的“ Init”是大写的?

来自分类Java

为什么要在构造函数中调用super()?

来自分类Java

我为什么要在Java中链流操作?

来自分类Python

为什么要在conda环境中添加频道?

来自分类Dev

为什么需要在构造函数中绑定函数

来自分类Dev

为什么要在sql中明确使用回滚?

来自分类Dev

为什么我需要在Kotlin中在=之前添加空间?

Related 相关文章

  1. 1

    为什么nil检查失败

  2. 2

    为什么要在未检查的异常中将检查的异常包装在lambda中?

  3. 3

    为什么要在def __init __(self,n)-> None:中使用->?

  4. 4

    为什么我们要在OnCreate中检查重叠的片段?(来自文档)

  5. 5

    AngularJS:为什么要在`$ watch`监听器中检查newValue是否与oldValue相同?

  6. 6

    为什么要在此代码中检查“如果id不为None”?

  7. 7

    Flask为什么要在其json模块的json.dumps('/')`中检查`'\\ /'?

  8. 8

    为什么要在等待后检查WIFEXITED以杀死Linux系统调用中的子进程?

  9. 9

    为什么Java Enum需要在compareTo方法中检查类和declaringClass

  10. 10

    为什么要在检查器中脚本的顶部将int变量值设置为0,为什么值是1?

  11. 11

    为什么要在搬家之前检查是否空了?

  12. 12

    为什么要在函数的参数中赋值?

  13. 13

    为什么要在Python中关闭文件?

  14. 14

    为什么要在RabbitMQ中声明交换?

  15. 15

    为什么需要在结构中填充?

  16. 16

    在Objective-C中,为什么要检查self = [super init]是否不为零?

  17. 17

    为什么在Lua中“ not nil”返回true?

  18. 18

    为什么()在Ruby中返回nil?

  19. 19

    在Swift中,为什么“让_ = this”要比“ this!= nil”更快?

  20. 20

    为什么(a,b = [nil,nil])在Ruby中为真?

  21. 21

    为什么在类中需要Thread .__ init __()?

  22. 22

    为什么__init__在python中失败

  23. 23

    为什么std :: ios_base :: Init中的“ Init”是大写的?

  24. 24

    为什么要在构造函数中调用super()?

  25. 25

    我为什么要在Java中链流操作?

  26. 26

    为什么要在conda环境中添加频道?

  27. 27

    为什么需要在构造函数中绑定函数

  28. 28

    为什么要在sql中明确使用回滚?

  29. 29

    为什么我需要在Kotlin中在=之前添加空间?

热门标签

归档