go 某个包被多个包引入其中的init函数 会被调用多次吗
时间: 2023-01-29 21:48:53 浏览: 371
是的,如果某个包被多个包引入,那么在程序运行时,这个包的`init`函数会被调用多次。
在 Go 语言中,每个包都可以有一个`init`函数,这个函数在包被引入时会被自动调用。如果一个包被多个其它包引入,那么在程序运行时,这个包的`init`函数就会被调用多次。
例如,如果包 `A` 和包 `B` 都引入了包 `C`,那么在程序运行时,包 `C` 的`init`函数就会被调用两次。
举个例子,假设我们有如下三个文件:
```
// main.go
package main
import "fmt"
import "A"
import "B"
func main() {
fmt.Println("main")
}
// A.go
package A
import "C"
func init() {
fmt.Println("A")
}
// B.go
package B
import "C"
func init() {
fmt.Println("B")
}
// C.go
package C
import "fmt"
func init() {
fmt.Println("C")
}
```
当我们运行程序时,会看到输出结果如下:
```
C
C
A
B
main
```
可以看到,包 `C` 的`init`函数被调用了两次,因为包 `A` 和包 `B` 都引入了包 `C`。
相关问题
go 同一个项目的某个包被其他包引入,其中的init函数 会被调用多次吗
在 Go 中,当一个包被多个包同时引入时,这个包中的 `init` 函数只会被调用一次。只有当一个包第一次被引入时,它的 `init` 函数才会被调用。例如,在同一个项目中,如果包 A 和包 B 都引入了包 C,那么包 C 中的 `init` 函数只会被调用一次。
java在抽象类中定义一个arraylist,且做为一个包被引入其他项目
这个问题属于技术问题,可以回答。在抽象类中定义一个ArrayList可以作为该抽象类的一个属性,可以在该抽象类中定义相应的方法来操作这个ArrayList。如果需要在其他项目中使用这个抽象类,需要将这个包加入到其他项目的类路径下。
阅读全文