Golang 关于 init()

init()用于在程序启动时初始化包中的变量或执行一些预备操作。它具有以下特点和用途:

  1. 自动执行:
    init() 函数会在包被加载时自动执行,无需手动调用。
    每个 Go 文件可以包含一个或多个 init() 函数,所有的 init() 函数在主程序执行之前会被依次执行。

  2. 执行顺序:

    • 同一个go文件内,按照定义顺序,即从上到下依次执行 init() 函数。
    • 如果一个包依赖于其他包,依赖包的 init() 函数会先执行,然后再执行当前包的 init()。
    • 在同一个包中,init() 函数的执行顺序是按照文件的编译顺序(通常是文件名的字母顺序)来决定的。
  3. 用途:

    • 初始化变量或数据结构。
    • 设置配置参数。
    • 注册某些程序运行时所需的资源。
    • 在执行 main() 函数之前执行一些前置逻辑。
  4. 限制:

    • init() 函数不能有参数,也不能有返回值。
    • 它通常用于包的内部初始化操作,而不应用于业务逻辑。
    • 不建议在 init() 函数中执行复杂或耗时的操作,以免影响程序启动速度。
  5. 与 main() 的关系:

    • main() 是程序的入口点,而 init() 是在 main() 之前执行的。
    • init() 函数在 main() 函数执行前完成所有的初始化工作。
  6. 示例:

package main

import (
    "fmt"
)

var num int

func init() {
    fmt.Println("init() called")
    num = 100
}

func main() {
    fmt.Println("main() called")
    fmt.Println("num =", num)
}

在这个示例中,init() 会在 main() 之前执行,初始化 num 的值。

  1. 多 init() 函数:

    是的,同一个包、go文件内可以同时放多个init().
    并且它们将按照定义的顺序依次执行。

  2. 最佳实践:

    • 应用 init() 时保持简洁,尽量避免复杂逻辑。
    • 不要滥用 init(),应考虑清楚是否有必要在 init() 中初始化,而不是直接在变量声明时初始化。

本文由 上传。


如果您喜欢这篇文章,请点击链接 Golang 关于 init() 查看原文。


您也可以直接访问:https://www.fanfine.cn/blog/31

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇