1. 程式人生 > >Golang的自定義包結構

Golang的自定義包結構

   最近,一直在研究Go語言。語言的思想很新穎,多方面因素也讓我著實喜歡這門語言。每個語法點都較為簡單實用,自己也較為輕鬆地就學會了。But,遇到Go語言裡的自定義包時,確實讓我頭大了一會。第一次嘗試自定義包,是在幫自己的室友配Go環境的時候。當時配完環境之後,第一件事就是"Hello world"這可能是世界通用的程式設計輸出語句吧。我突發奇想,想把這句"Hello world"放在另外一個包中,通過跨包呼叫的方式來將該語句輸出。本以為和Java一致,建立一個包,建立一個相應的檔案。直接呼叫就可以了。結果這樣做了之後,有些懵。編譯器告訴我,“我不知道這是啥子。。。”。倒騰了一晚上,一看時間都一點了。舍友都見周公去了。沒辦法。

   百度了無數內容,確實沒找到合適的教程,-_-!,沒辦法還是自己來吧。跪著求了一個大神給我進行了一系列的講解,終於茅塞頓開。一直沒發現自己的錯誤就是在包名上。解決之前,問題在我看來像座山一樣。解決之後,問題卻像一粒沙。關鍵在與,你想不想得通。稀稀拉拉扯了半天,開始整理內容吧。
   在Go語言中,如果要使用自定義包有兩種方法。

   第一種方法為將自定義的包和包中的檔案放入GOPATH中,一般預設的就是你安裝go資料夾下的src資料夾。

這裡寫圖片描述

  放入此處之後,程式碼中的import將可以直接寫為如下形式:

這裡寫圖片描述

   這樣的好處是看起來較為簡介,而且不需要做其他處理。但我認為這種方法不夠優雅,把所有的自定義包都甩到src中,總是覺得怪怪的,畢竟一個是人家自帶的,一個是自己寫的。不好修改裡邊的內容不說,把別人的雜物放你家裡,你大概也會不樂意吧?

 所以,我還是喜歡使用第二種方式來進行自定義包的使用,放在自己的專案裡,自己好看好改,也不覺得奇怪。和第一種方法有點不同,你的自定義包和包中的檔案都應放在當前專案中,而且包名一定不能寫main。當時折騰了一晚上,就是這個地方沒有注意到。想想咱家還是萌萌噠。所以,放在專案中,結構應該如下:

這裡寫圖片描述

 這樣放置自定義包就可以了。

 Tip:在同一個包中的不同檔案裡的不同函式或變數都是可以直接呼叫的,不需要import。

 那麼,在import時,也要做出相應的調整:

這裡寫圖片描述

   這樣引用之後,就能正常使用了。在自定義包的檔案中,使用什麼包名你可以自行定義,資料夾名或者檔名都可,看當時程式設計的需要。

   千萬別手賤或者自作聰明在"./pkg"後在加一個/,那樣的話編譯器是找不到對應的包的,而之中得到檔案。然後,你就要和我一樣倒騰到一點也不直到問什麼出錯。

   這就是一個簡單的自定義包的使用整理,網上的教程很多,但講真確實沒弄明白,所以自己在總結一下,如果有初入門的兄弟姐妹也可以借鑑一下。有筆誤或理解錯誤歡迎指出。最後,感謝群裡的大神“codecore”給予我的幫助!