go語言必須有一個main套件。 Go語言是編譯型的靜態語言,所以在執行Go語言程式之前,需要先將其編譯成二進位的可執行檔;而要產生Go語言可執行程序,必須要有名為main的套件,並且在該套件下必須有且只有一個main函數。
本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
1. 套件的概念和原始檔案
Go程式是透過把套件連結到一起構成的。包是由一個個一起定義了屬於該包的常數、類型、變數、函數(它們可以被同一個包內的所有文件訪問,也可以透過導出而被其他的包使用)的源文件構成的。每個包的程式碼都可以當作很小的複用單元,被其他項目所引用。
每個原始檔案都有一個package語句定義了它屬於哪個包,後面跟著可能為空的import集合聲明了需要使用哪些包,再往後跟著可能為空的函數、類型、變量、常量的集合。
我們可以看到名為code和errno的檔案的歸屬包,都為errno,這就表明,在Go中並不像Java那樣以一個類別作為複用單元,而是以包作為一個很小的複用單元。
總結:在Go中最小的單元是包,而包下的可以有多個源文件,源文件就相當於class類,每個源文件透過package語句聲明了該文件屬於哪個包。
2. main套件
在Go語言裡,命名為main的套件具有特殊的意義。 Go語言的編譯程式會試圖把這種名字的套件編譯為二進位的可執行檔。所有用Go語言編譯的可執行程式都必須有一個名為main的套件。
簡單來說:要產生Go語言可執行程序,必須要有名為main的package包,且在該套件下必須有且只有一個main函數
#當編譯器發現這個某個套件的名字為main是,它一定也會發現名為main()是函數,否則不會建立執行檔。 main()函數是程式的入口,所以,如果沒有這個函數,程式就沒有辦法開始執行。程式編譯時,會使用宣告main套件的程式碼所在的目錄的目錄名稱作為二進位執行檔的檔名。
3. 套件目錄的命名規範
所謂無規矩不成方圓,在開發Go語言之前,我們一定要了解Go語言的一些特性和規範才能更好的開發出高品質,可通用的程式碼,不然開發出一個只有你看得懂的程序,那隻能算是自娛自樂罷了。本節根據一些經典程式碼和公司開發習慣給了一個命名規範範例,範例如下:
下面根據這個範例圖,講解一下我理解的開發規格:
#conf: 本目錄主要保存設定檔
handler:主要存放一些程式的入口文件,相當於Java中的Collter層
model:主要存放於資料庫操作相關的檔案
pkg:主要保存一些通用的工具類別等程式碼
router:主要保存路由服務的程式碼
service:主要保存業務程式碼
#vendor:主要保存專案本身的依賴套件
conf.yaml:專案的設定文件,可放在跟目錄下,也可放在conf資料夾下
main.go:程式的入口,一般放置在根目錄下
4. 導入
程序的初始化和執行都起始於main套件。如果main套件也導入了它的套件,那麼就會在編譯時將它們依序導入。一個被多個地方導入的套件只會被導入一次。當一個包被導入時,如果該包還導入了其它的包,那麼會先將其它包導入進來,然後再對這些包中的包級常數和變量進行初始化,接著執行init函數(如果有的話),依序類推。等所有被導入的套件都載入完畢了,就會開始對main套件中的包級常數和變數進行初始化,然後執行main套件中的init函數(如果存在的話),最後執行main函數。
- 目前套件下的vendor目錄。
- 向上級目錄找,直到找到src下的vendor目錄。
- 在GOPATH下面找依賴套件。
- 在GOROOT目錄下尋找
套件匯入的語法
在寫Go程式碼的時候常用到import這個指令用來導入套件文件,看到的方式參考如下:- 常規導入
import( "fmt" )然後在程式碼裡面可以透過如下的方式呼叫## #
fmt.Println("hello world")
上面这个fmt是Go语言的标准库,他其实是去GOROOT下去加载该模块。
点操作
import ( . "fmt" )
这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,也就是前面你调用的fmt.Println(“hello world”) 可以省略的写成Println(“hello world”)。注意:该包内的函数不能与其重名。
别名操作
import( f “fmt” )
别名操作顾名思义可以把包命名成另一个用起来容易记忆的名字,别名操作调用包函数时前缀变成了重命名的前缀,即f.Println(“hello world”),通常为了解决导入多个重名包的问题。
_操作
import ( _ "github.com/go-sql-driver/mysql" )
_操作其实只是引入该包但不使用,通常只为了执行该包中所有的init()函数,最常见的就是上面的mysql包。
以上是go語言必須有一個什麼包的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Golang和Python的主要區別在於並發模型、類型系統、性能和執行速度。 1.Golang使用CSP模型,適用於高並發任務;Python依賴多線程和GIL,適合I/O密集型任務。 2.Golang是靜態類型,Python是動態類型。 3.Golang編譯型語言執行速度快,Python解釋型語言開發速度快。

Golang通常比C 慢,但Golang在並發編程和開發效率上更具優勢:1)Golang的垃圾回收和並發模型使其在高並發場景下表現出色;2)C 通過手動內存管理和硬件優化獲得更高性能,但開發複雜度較高。

Golang在雲計算和DevOps中的應用廣泛,其優勢在於簡單性、高效性和並發編程能力。 1)在雲計算中,Golang通過goroutine和channel機制高效處理並發請求。 2)在DevOps中,Golang的快速編譯和跨平台特性使其成為自動化工具的首選。

Golang和C 在執行效率上的表現各有優勢。 1)Golang通過goroutine和垃圾回收提高效率,但可能引入暫停時間。 2)C 通過手動內存管理和優化實現高性能,但開發者需處理內存洩漏等問題。選擇時需考慮項目需求和團隊技術棧。

Golang更適合高並發任務,而Python在靈活性上更有優勢。 1.Golang通過goroutine和channel高效處理並發。 2.Python依賴threading和asyncio,受GIL影響,但提供多種並發方式。選擇應基於具體需求。

Golang和C 在性能上的差異主要體現在內存管理、編譯優化和運行時效率等方面。 1)Golang的垃圾回收機制方便但可能影響性能,2)C 的手動內存管理和編譯器優化在遞歸計算中表現更為高效。

selectgolangforhighpperformanceandcorrency,ifealforBackendServicesSandNetwork程序; selectpypypythonforrapiddevelopment,dataScience和machinelearningDuetoitsverserverserverserversator versator anderticality andextility andextentensivelibraries。

Golang和Python各有优势:Golang适合高性能和并发编程,Python适用于数据科学和Web开发。Golang以其并发模型和高效性能著称,Python则以简洁语法和丰富库生态系统著称。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

記事本++7.3.1
好用且免費的程式碼編輯器