1. 程式人生 > >golang init和main函式

golang init和main函式

Go裡面有兩個保留的函式:init函式和main函式。下邊就來比較一下兩個函式的異同。
相同點:兩個函式在定義時不能有任何的引數和返回值,且Go程式自動呼叫。
不同點:init可以應用於任意包中,且可以重複定義多個。main函式只能用於main包中,且只能定義一個。

下邊說一下兩個函式的執行順序:
對同一個go檔案的init()呼叫順序是從上到下的
對同一個package中不同檔案是按檔名字串比較“從小到大”順序呼叫各檔案中的init()函式,對於
對不同的package,如果不相互依賴的話,按照main包中"先import的後呼叫"的順序呼叫其包中的init()
如果package存在依賴,則先呼叫最早被依賴的package中的init()
最後呼叫main函式

下圖截自astaxie的《Go Web 程式設計》

ps:如果init函式中使用了println或者print 你會發現在執行過程中這兩個不會按照你想象中的順序執行。這兩個函式官方只推薦在測試環境中使用,對於正式環境不要使用。

轉自http://studygolang.com/articles/3873

相關推薦

golang initmain函式

Go裡面有兩個保留的函式:init函式和main函式。下邊就來比較一下兩個函式的異同。 相同點:兩個函式在定義時不能有任何的引數和返回值,且Go程式自動呼叫。 不同點:init可以應用於任意包中,且可以重複定義多個。main函式只能用於main包中,且只能定義一個。 下

golang學習(package main 函式)

在Go語言中,和java的main是有所區別的,具體區別如下: 在java中,任何一個java檔案都可以有唯一一個main方法當做啟動函式 在go中,則是任何一個package中,都可以有唯一一個帶有main方法的go檔案 也就是說,一個package下,只

第十四周 【專案1-動物這樣叫】下面是給出的基類Animal宣告main()函式

#include <iostream> #include <string> using namespace std; class Animal { public: virtual void cry() { cout<&l

shell指令碼引數傳遞main函式引數傳遞方式類似

shell指令碼 test.sh呼叫的時候傳入引數,param1,param2: #test.sh param1 param2 那麼在指令碼內部相當於把 test.sh param1 param2 看成三個引數出入,所以引數0為$0 (test.sh),引數1為$1 (pa

go中的main函式init函式

        Go裡面有兩個保留的函式:init函式(能夠應用於所有的package)和main函式(只能應用於package main)。這兩個函式在定義時不能有任何的引數和返回值。雖然一個package裡面可以寫任意多個init函式,但這無論是對於可讀性還是以

cC++main函式中引數的意義用法

main函式是C++的主函式,除了程式本身外,任何函式都不可以呼叫main函式。main函式中可以新增引數,也可以不寫。main函式預設有兩個引數,main(int argc, char ** argv),其中,argc是用來表面main函式究竟呼叫了幾個引數,因為程式本身的檔名就是一個

Linux C中main函式中的引數argcargv

                                          &

Servlet中的init函式建構函式

當servlet物件建立完畢後,接著會呼叫init函式,init函式一定會在處理第一個request之前被呼叫,init函式用於實現一些初始化操作。 為什麼不在建構函式中直接進行初始化? 在JDK1.0時代(此時剛剛開始定義servlet),動態載入的類不能有含

關於C/C++中main函式引數中argcargv的解釋

    相信大家在剛開始看OpenCV的C/C++程式碼時,會有這樣的疑惑:為什麼有些程式碼中main函式的引數中有argc和argv這樣的引數呢??今天就給大家詳細講解一下這兩個引數的含義和用法。      我們經常見到的兩種形式如下: 1. in

[C/C++基礎知識] main函式的引數argcargv

該篇文章主要是關於C++\C語言最基礎的main函式的引數知識,是學習C++或C語言都必備的知識點.不知道你是否知道該知識?希望對大家有所幫助.一.main()函式引數 通常我們在寫主函式時都是voi

C++中main函式中引數argcargv的使用例項

含義解釋 (1).int argc:即為arguments count(引數數) 執行程式傳送給main函式命令列引數的總數,包括可執行程式名。當argc=1時表示只有一個程式名稱,此時儲存在argv

帶引數的main函式 寫作執行

1、編寫帶引數的main(int argc,char* argv[]) argc表示輸入引數的個數  *argv[] 指標陣列表示裡面儲存的變數 第一個可以填寫需要執行的exe檔案(vs2010可以通過生成->生成解決方案 產生),一般可以填寫需要的檔名也可以是一個空字串,但

Golang-gopark函式goready函式原理分析

Golang-gopark函式和goready函式原理分析 gopark函式 goready函式 前面介紹的scheduler和channel裡面都與gopark和goready這兩個函式緊密相關,但是站在上層可以理解這兩個函式的作用

main函式中引數argcargv含義及用法

opencv中main函式一般形式:int main(int argc, char** argv) 其中,argc是argumentcount的縮寫,表示傳入main函式的引數個數;    argv 是argument vector的縮寫,表示傳入main函式的引數序列或

C++ main函式中引數argcargv含義及用法

argc 是 argument count的縮寫,表示傳入main函式的引數個數; argv 是 argument vector的縮寫,表示傳入main函式的引數序列或指標,並且第一個引數argv[0

main 函式中引數 argc argv 的設定

該篇文章主要是關於C++\C語言最基礎的main函式的引數知識,是學習C++或C語言都必備的知識點.不知道你是否知道該知識?希望對大家有所幫助.一.main()函式引數 通常我們在寫主函

QT 的main函式引數argcargv學習總結

轉載於:blog.sina.com.cn/s/blog_7f41f0d301018rgb.html 1、int main(int argc, char*argv[]): 其中argv為指標的指標可以char **argv or: char *argv[] or: chara

md5Hex("中文")在main函式tomcat環境中執行結果不同

DigestUtils.md5Hex("測試字串");在main函式和tomcat環境中執行結果不同。 原因應該是main函式執行環境和tomcat執行環境的編碼有區別導致加密結果不同; DigestUtils.md5Hex("測試字串".getBytes("iso-885

習題 9.8 修改第6題的程式,增加一個fun函式,改寫main函式。改為在fun函式中呼叫changedisplay函式。在fun函式中使用物件的引用(Student &)作為形參。

C++程式設計(第三版) 譚浩強 習題9.8 個人設計 習題 9.8 修改第6題的程式,增加一個fun函式,改寫main函式。改為在fun函式中呼叫change和display函式。在fun函式中

3. init函式class_init函式的講解

如何去使用GObject去構建一個所謂的“物件”呢?GObject中每個類要定義兩個結構體,假設你要定義的型別為People,那麼你要定義兩個結構分別名為People和PeopleClass,估計剛接觸的人會有些暈,一般的C++啊,JAVA什麼的都是直接一個class了事兒