gpt4 book ai didi

golang什么是导入副作用

转载 作者:行者123 更新时间:2023-12-01 19:12:49 25 4
gpt4 key购买 nike

import (
_ "github.com/lib/pq"
_ "image/png"
...
)

effective go它说这种进口意味着副作用。我读过几个答案,但没有一个解释什么是导入副作用。有人可以详细说明一下术语导入副作用吗?

最佳答案

当他们说“导入副作用”时,他们本质上是指静态使用的代码/功能。这意味着仅导入包就会导致在应用程序开始时执行一些代码,使我的系统处于与没有导入该包时不同的状态(例如 init() 中的代码,其在例如注册处理程序,它还可以放置配置文件,修改光盘上的资源等)。有效的 go 教程只是解释这一点,以说明开发人员可能想要进行空白导入的原因,即; 导入_“somepackageImNotUsingReally”

编辑:当我说 init() 我指的是这个方法时添加额外的上下文; https://golang.org/doc/effective_go.html#init - 任何导入的包都将在调用 main 之前调用其 init 方法。 init() 中的任何内容都是副作用。我认为不可能有任何其他东西,因为像常量这样的东西将在包范围内,而不是全局范围内,所以它不会重新定义常量或类似的东西。

EDIT2:正如注释中所指出的以及上面的 init 链接中所解释的那样,“在包中的所有变量声明评估其初始值设定项之后调用”,这意味着像 PackageScopeVar := unexportedInitializerThatWritesToDisc() 这样的代码将运行并可能产生副作用。

关于golang什么是导入副作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32465453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com