最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang特殊init函數(shù)的實現(xiàn)實例

 更新時間:2025年11月20日 11:31:34   作者:兩片空白  
本文介紹了Go語言中特殊函數(shù)init()的作用,如變量初始化、包初始化順序以及與main函數(shù)的關(guān)系,具有一定的參考價值,感興趣的可以了解一下

介紹

init()函數(shù)是一個特殊的函數(shù),存在一下特性

  • 不能被其它函數(shù)調(diào)用,而是子main()函數(shù)之前自動調(diào)用
  • 不能作為參數(shù)傳入
  • 不能有傳入?yún)?shù)和返回值

作用:

  • 對變量進(jìn)行初始化
  • 檢查/修復(fù)程序狀態(tài)
  • 注冊
  • 運行一次計算

以下是<<the way to go>>的解釋:

變量除了可以在全局聲明中初始化,也可以在 init ()函數(shù)中初始化。這是一類非常特殊的函數(shù),它不能夠被人為調(diào)用,而是在每個包完成初始化后自動執(zhí)行,并且執(zhí)行優(yōu)先級比 main 函數(shù)高。

每個源文件都只能包含一個 init() 函數(shù)(此處存在錯誤)。初始化總是以單線程執(zhí)行,并且按照包的依賴關(guān)系順序執(zhí)行。

使用

  • 每個源文件都可以包含多個init()函數(shù)

  • 導(dǎo)入包的順序決定了init函數(shù)的執(zhí)行順序

go中不同包中init函數(shù)的執(zhí)行順序是根據(jù)包的導(dǎo)入關(guān)系決定。

 init函數(shù)調(diào)用關(guān)系:圖片來源網(wǎng)絡(luò)

場景

  • 對變量進(jìn)行初始化

package main

import (
	"math"
)

var pi float64

func init() {
	pi = 4 * math.Atan(1)

}
  • 在程序開始前,調(diào)用后臺執(zhí)行g(shù)oroutine
package main

func init() {
	go backend()

}
  • 連接數(shù)據(jù)庫
package main

import (
	"fmt"

	_ "github.com/go-sql-driver/mysql"
	"github.com/jmoiron/sqlx"
)

var Db *sqlx.DB

func init() {
	database, err := sqlx.Open("mysql", "root:xxx@tcp(127.0.0.1:3306)/test")
	if err != nil {
		fmt.Println("open mysql fail", err)
		return
	}

	Db = database
}

到此這篇關(guān)于Golang特殊init函數(shù)的實現(xiàn)實例的文章就介紹到這了,更多相關(guān)Golang特殊init函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go中的?=?和?:=?區(qū)別小結(jié)

    Go中的?=?和?:=?區(qū)別小結(jié)

    在Go語言編程中,"="用于給已聲明的變量賦值,而":="同時聲明并初始化變量,只能在函數(shù)內(nèi)使用,理解這兩者的不同,有助于編寫更清晰的代碼,下面就來介紹一下
    2024-10-10
  • go語言實現(xiàn)mqtt協(xié)議的實踐

    go語言實現(xiàn)mqtt協(xié)議的實踐

    MQTT是一個基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議。本文主要介紹了go語言實現(xiàn)mqtt協(xié)議的實踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • GO 切片刪除元素的三種方法

    GO 切片刪除元素的三種方法

    本文主要介紹了GO 切片刪除元素,根據(jù)要刪除元素的位置有三種情況,分別是從開頭位置刪除、從中間位置刪除和從尾部刪除,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • Go 結(jié)構(gòu)體、數(shù)組、字典和 json 字符串的相互轉(zhuǎn)換方法

    Go 結(jié)構(gòu)體、數(shù)組、字典和 json 字符串的相互轉(zhuǎn)換方法

    今天小編就為大家分享一篇Go 結(jié)構(gòu)體、數(shù)組、字典和 json 字符串的相互轉(zhuǎn)換方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • golang 流式讀取和發(fā)送使用場景示例

    golang 流式讀取和發(fā)送使用場景示例

    這篇文章主要為大家介紹了golang 流式讀取和發(fā)送使用場景示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • go module本地包導(dǎo)入全過程

    go module本地包導(dǎo)入全過程

    文章介紹了使用gom模塊化管理工具進(jìn)行本地包導(dǎo)入的方法,包括啟用、配置Gom、創(chuàng)建工作目錄、新建與文件、編寫代碼、運行與發(fā)布模塊等等等、自動更新與同步等,通過具體流程演示了如何在本地使用與管理Gom模塊化包導(dǎo)入與更新的過程om
    2026-04-04
  • 一文帶你了解Go中跟蹤函數(shù)調(diào)用鏈的實現(xiàn)

    一文帶你了解Go中跟蹤函數(shù)調(diào)用鏈的實現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了go如何實現(xiàn)一個自動注入跟蹤代碼,并輸出有層次感的函數(shù)調(diào)用鏈跟蹤命令行工具,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • Go?gRPC服務(wù)端流式RPC教程示例

    Go?gRPC服務(wù)端流式RPC教程示例

    這篇文章主要為大家介紹了Go?gRPC服務(wù)端流式RPC教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Go中unsafe.Pointer類型的使用小結(jié)

    Go中unsafe.Pointer類型的使用小結(jié)

    unsafe.Pointer?是?Go?語言標(biāo)準(zhǔn)庫?unsafe?包中的一個特殊類型,用于在不同類型的指針之間進(jìn)行?無類型轉(zhuǎn)換,允許你繞過?Go?的類型系統(tǒng)進(jìn)行底層操作,感興趣的可以了解一下
    2026-02-02
  • golang 在windows中設(shè)置環(huán)境變量的操作

    golang 在windows中設(shè)置環(huán)境變量的操作

    這篇文章主要介紹了golang 在windows中設(shè)置環(huán)境變量的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04

最新評論

长汀县| 个旧市| 洛南县| 正蓝旗| 乌兰察布市| 犍为县| 格尔木市| 古浪县| 紫金县| 泽州县| 肇源县| 宝应县| 双鸭山市| 静宁县| 安丘市| 甘洛县| 凌源市| 靖安县| 囊谦县| 兴城市| 特克斯县| 淳安县| 蓬莱市| 岢岚县| 浪卡子县| 镇雄县| 贵德县| 黄大仙区| 环江| 杨浦区| 镇远县| 韶山市| 丽水市| 中卫市| 淮北市| 北海市| 长宁区| 常宁市| 华宁县| 台江县| 桑日县|