構建go語言 go語言構造函數

如何學習GO語言?

Go語言也稱 Golang,兼具效率、性能、安全、健壯等特性。這套Go語言教程(Golang教程)通俗易懂,深入淺出,既適合沒有基礎的讀者快速入門,也適合工作多年的程序員查閱知識點。

創新互聯提供高防主機、云服務器、香港服務器、重慶服務器托管

Go 語言

這套教程在講解一些知識點時,將 Go 語言和其他多種語言進行對比,讓掌握其它編程語言的讀者能迅速理解 Go 語言的特性。Go語言從底層原生支持并發,無須第三方庫、開發者的編程技巧和開發經驗就可以輕松搞定。

Go語言(或 Golang)起源于 2007 年,并在 2009 年正式對外發布。Go 是非常年輕的一門語言,它的主要目標是“兼具 Python 等動態語言的開發速度和 C/C++ 等編譯型語言的性能與安全性”。

Go語言是編程語言設計的又一次嘗試,是對類C語言的重大改進,它不但能讓你訪問底層操作系統,還提供了強大的網絡編程和并發編程支持。Go語言的用途眾多,可以進行網絡編程、系統編程、并發編程、分布式編程。

Go語言的推出,旨在不損失應用程序性能的情況下降低代碼的復雜性,具有“部署簡單、并發性好、語言設計良好、執行性能好”等優勢,目前國內諸多 IT 公司均已采用Go語言開發項目。Go語言有時候被描述為“C 類似語言”,或者是“21 世紀的C語言”。Go 從C語言繼承了相似的表達式語法、控制流結構、基礎數據類型、調用參數傳值、指針等很多思想,還有C語言一直所看中的編譯后機器碼的運行效率以及和現有操作系統的無縫適配。

因為Go語言沒有類和繼承的概念,所以它和 Java 或 C++ 看起來并不相同。但是它通過接口(interface)的概念來實現多態性。Go語言有一個清晰易懂的輕量級類型系統,在類型之間也沒有層級之說。因此可以說Go語言是一門混合型的語言。

此外,很多重要的開源項目都是使用Go語言開發的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。Go 是編譯型語言,Go 使用編譯器來編譯代碼。編譯器將源代碼編譯成二進制(或字節碼)格式;在編譯代碼時,編譯器檢查錯誤、優化性能并輸出可在不同平臺上運行的二進制文件。要創建并運行 Go 程序,程序員必須執行如下步驟。

使用文本編輯器創建 Go 程序;

保存文件;編譯程序;運行編譯得到的可執行文件。

這不同于 Python、Ruby 和 JavaScript 等語言,它們不包含編譯步驟。Go 自帶了編譯器,因此無須單獨安裝編譯器。

鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的“智慧學習工場2020-學碩創新工作站 ”唯一獲準的“區塊鏈技術專業”試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。

GO語言(十一):開始使用多模塊工作區

本教程介紹 Go 中多模塊工作區的基礎知識。使用多模塊工作區,您可以告訴 Go 命令您正在同時在多個模塊中編寫代碼,并輕松地在這些模塊中構建和運行代碼。

在本教程中,您將在共享的多模塊工作區中創建兩個模塊,對這些模塊進行更改,并在構建中查看這些更改的結果。

本教程需要 go1.18 或更高版本。使用go.dev/dl中的鏈接確保您已在 Go 1.18 或更高版本中安裝了 Go 。

首先,為您要編寫的代碼創建一個模塊。

1、打開命令提示符并切換到您的主目錄。

在 Linux 或 Mac 上:

在 Windows 上:

2、在命令提示符下,為您的代碼創建一個名為工作區的目錄。

3、初始化模塊

我們的示例將創建一個hello依賴于 golang.org/x/example 模塊的新模塊。

創建你好模塊:

使用 . 添加對 golang.org/x/example 模塊的依賴項go get。

在 hello 目錄下創建 hello.go,內容如下:

現在,運行 hello 程序:

在這一步中,我們將創建一個go.work文件來指定模塊的工作區。

在workspace目錄中,運行:

該go work init命令告訴為包含目錄中模塊的工作空間go創建一個文件 。go.work./hello

該go命令生成一個go.work如下所示的文件:

該go.work文件的語法與go.mod相同。

該go指令告訴 Go 應該使用哪個版本的 Go 來解釋文件。它類似于文件中的go指令go.mod 。

該use指令告訴 Go在進行構建時hello目錄中的模塊應該是主模塊。

所以在模塊的任何子目錄中workspace都會被激活。

2、運行工作區目錄下的程序

在workspace目錄中,運行:

Go 命令包括工作區中的所有模塊作為主模塊。這允許我們在模塊中引用一個包,即使在模塊之外。在模塊或工作區之外運行go run命令會導致錯誤,因為該go命令不知道要使用哪些模塊。

接下來,我們將golang.org/x/example模塊的本地副本添加到工作區。然后,我們將向stringutil包中添加一個新函數,我們可以使用它來代替Reverse.

在這一步中,我們將下載包含該模塊的 Git 存儲庫的副本golang.org/x/example,將其添加到工作區,然后向其中添加一個我們將從 hello 程序中使用的新函數。

1、克隆存儲庫

在工作區目錄中,運行git命令來克隆存儲庫:

2、將模塊添加到工作區

該go work use命令將一個新模塊添加到 go.work 文件中。它現在看起來像這樣:

該模塊現在包括example.com/hello模塊和 `golang.org/x/example 模塊。

這將允許我們使用我們將在模塊副本中編寫的新代碼,而不是使用命令stringutil下載的模塊緩存中的模塊版本。

3、添加新功能。

我們將向golang.org/x/example/stringutil包中添加一個新函數以將字符串大寫。

將新文件夾添加到workspace/example/stringutil包含以下內容的目錄:

4、修改hello程序以使用該功能。

修改workspace/hello/hello.go的內容以包含以下內容:

從工作區目錄,運行

Go 命令在go.work文件指定的hello目錄中查找命令行中指定的example.com/hello模塊 ,同樣使用go.work文件解析導入golang.org/x/example。

go.work可以用來代替添加replace 指令以跨多個模塊工作。

由于這兩個模塊在同一個工作區中,因此很容易在一個模塊中進行更改并在另一個模塊中使用它。

現在,要正確發布這些模塊,我們需要發布golang.org/x/example 模塊,例如在v0.1.0. 這通常通過在模塊的版本控制存儲庫上標記提交來完成。發布完成后,我們可以增加對 golang.org/x/example模塊的要求hello/go.mod:

這樣,該go命令可以正確解析工作區之外的模塊。

Go 語言交叉編譯和構建標簽

現代應用支持多平臺運行是一件稀松平常的事情,在 Go 語言里面,為了支持應用的多平臺部署,給用戶提供了方便的配置方式來輕松構建針對不同操作系統和平臺的運行文件。

Go 的構建約束,即構建標簽,是以 // go:build 為開始的行注釋,如果是 1.16 或之前的版本,格式是 // +build 。跟此變更相關的 issue 可以參考 25348 。

構建標簽必須出現在 package 子句之前。為了區分構建標簽和包文檔的描述注釋,構建標簽后面應該有一個空行。

構建標簽由||, , !運算符以及括號來組合表達。運算符與 Go 中的含義相同。

例如,以下構建標簽在滿足 linux 和 386 約束,或者滿足 darwin 而 cgo 不滿足時構建文件:

//go:build (linux 386) || (darwin !cgo)

又如:僅在使用 cgo 時,且僅在 Linux 和 OS X 上構建文件: //go:build cgo (linux || darwin)

注意:1.17 及以后的表達格式里,一個文件有多個 //go:build 行是錯誤的。

在 1.16 及以前的版本,多行構建標簽是允許的,并且組合方式是通過空格和逗號等來區分,空格符表示 OR,逗號表示 AND,感嘆號表示 NOT。而多行之間則表示 OR。gofmt 命令將在遇到舊語法時添加等效的 //go:build 約束。如下是示例:

如果文件名在去除擴展名和可能的 _test 后綴后匹配以下任何模式, (例如:source_windows_amd64.go)其中 GOOS 和 GOARCH 分別代表任何已知的操作系統和體系結構值,那么認為該文件除了文件中的任何顯式約束之外,具有這些術語的所表達的隱式構建標簽。

除了官方提供的針對不同平臺的內置標簽,用戶也可以使用自定義標簽,例如 //go:build prod , 只需要在執行 go build 時顯式帶上標簽名 go build --tags=prod 。

想要使文件構建時被忽略,可以使用: //go:build ignore ,其他任何沒有被用來定義為標簽的詞也可以,但"ignore"是約定俗成的。)。Go 語言目前支持的系統和架構可以參考 官方文檔 。

分享名稱:構建go語言 go語言構造函數
網頁鏈接:http://m.kartarina.com/article46/hgpoeg.html

成都網站建設公司_創新互聯,為您提供網站導航App設計企業建站全網營銷推廣網站設計網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站建設
主站蜘蛛池模板: 亚洲AV无码一区二区二三区软件| 无码国内精品久久人妻蜜桃| 国产成人无码一区二区三区在线| 亚洲Av无码乱码在线播放| 无码人妻一区二区三区精品视频| heyzo专区无码综合| 久久午夜夜伦鲁鲁片无码免费| 亚洲AV无码专区亚洲AV伊甸园| 亚洲aⅴ天堂av天堂无码麻豆| 亚洲国产一二三精品无码| 无码福利写真片视频在线播放| 精品无码国产自产拍在线观看蜜| 无码精品人妻一区二区三区人妻斩| 亚洲中文字幕无码久久| 成人年无码AV片在线观看| 亚洲V无码一区二区三区四区观看| 亚洲成av人片不卡无码| av无码人妻一区二区三区牛牛| 精品多人p群无码| 中文有无人妻vs无码人妻激烈| 无码日韩精品一区二区免费| 国产精品无码A∨精品影院| 97无码免费人妻超级碰碰碰碰| 无码乱码av天堂一区二区| 国内精品人妻无码久久久影院| 无码人妻aⅴ一区二区三区| 无码精品日韩中文字幕| 少妇人妻无码专区视频| 中文字幕乱妇无码AV在线| 激情无码人妻又粗又大| 无码八A片人妻少妇久久| 亚洲精品无码精品mV在线观看| 在线看片福利无码网址| 亚洲精品无码久久一线| 丰满熟妇人妻Av无码区| 波多野结衣AV无码| 内射无码专区久久亚洲| 一本大道无码日韩精品影视_| 毛片一区二区三区无码| 中文字幕无码不卡免费视频| 亚洲AV无码一区二区三区在线|