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 init和main函式
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函式,但這無論是對於可讀性還是以
c和C++main函式中引數的意義和用法
main函式是C++的主函式,除了程式本身外,任何函式都不可以呼叫main函式。main函式中可以新增引數,也可以不寫。main函式預設有兩個引數,main(int argc, char ** argv),其中,argc是用來表面main函式究竟呼叫了幾個引數,因為程式本身的檔名就是一個
Servlet中的init函式和建構函式
當servlet物件建立完畢後,接著會呼叫init函式,init函式一定會在處理第一個request之前被呼叫,init函式用於實現一些初始化操作。 為什麼不在建構函式中直接進行初始化? 在JDK1.0時代(此時剛剛開始定義servlet),動態載入的類不能有含
關於C/C++中main函式引數中argc和argv的解釋
相信大家在剛開始看OpenCV的C/C++程式碼時,會有這樣的疑惑:為什麼有些程式碼中main函式的引數中有argc和argv這樣的引數呢??今天就給大家詳細講解一下這兩個引數的含義和用法。 我們經常見到的兩種形式如下: 1. in
[C/C++基礎知識] main函式的引數argc和argv
該篇文章主要是關於C++\C語言最基礎的main函式的引數知識,是學習C++或C語言都必備的知識點.不知道你是否知道該知識?希望對大家有所幫助.一.main()函式引數 通常我們在寫主函式時都是voi
C++中main函式中引數argc和argv的使用例項
含義解釋 (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函式中引數argc和argv含義及用法
opencv中main函式一般形式:int main(int argc, char** argv) 其中,argc是argumentcount的縮寫,表示傳入main函式的引數個數; argv 是argument vector的縮寫,表示傳入main函式的引數序列或
C++ main函式中引數argc和argv含義及用法
argc 是 argument count的縮寫,表示傳入main函式的引數個數; argv 是 argument vector的縮寫,表示傳入main函式的引數序列或指標,並且第一個引數argv[0
main 函式中引數 argc和 argv 的設定
該篇文章主要是關於C++\C語言最基礎的main函式的引數知識,是學習C++或C語言都必備的知識點.不知道你是否知道該知識?希望對大家有所幫助.一.main()函式引數 通常我們在寫主函
QT 的main函式引數argc和argv學習總結
轉載於: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函式中呼叫change和display函式。在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了事兒