Golang 語言 教程

2021-10-02 13:05:52 字數 4031 閱讀 2126

目錄

golang入門指南

golang教程,設定工作區

go mods

hello world!

golang教程–變數

golang教程–資料型別

數字,字串和布林值

陣列,切片和對映

golang教程–型別轉換

條件語句

if else

switch case

迴圈指標

函式可變函式

方法,結構和介面

struct

方法inte***ce

包安裝包

建立乙個自定義包

包檔案go中的一些內建軟體包

錯誤處理

從函式返回自定義錯誤

panic

defer

併發使用select為go例程組織多個通道

為什麼golang成功?

不錯golang是一種靜態型別的編譯語言,於2023年3月發布。在此golang教程中,我們將學習從零知識到成為英雄。

「 go是一種開放源**程式語言,可輕鬆構建簡單,可靠且高效的軟體」。

在許多語言中,有很多方法可以解決給定的問題。程式設計師可能會花費大量時間來思考解決問題的最佳方法。另一方面,golang相信功能更少-只有一種解決問題的正確方法。

這樣可以節省開發人員時間,並使大型**庫易於維護。 golang中沒有諸如地圖和過濾器之類的「表達性」功能。

「當您具有增加表達力的功能時,通常會增加費用」

golang入門指南

golang由包裝製成。軟體包main告訴golang編譯器該程式被編譯為可執行檔案,而不是共享庫。它是應用程式的入口點。主程式包定義為:

package main

讓我們繼續前進,通過在go lang工作區中建立乙個檔案main.go來編寫乙個簡單的hello world示例。

golang教程,設定工作區

go中的工作空間由環境變數gopath定義。

您編寫的任何**均應寫入工作空間內。 go將搜尋gopath目錄或goroot目錄中的任何軟體包,這些軟體包在安裝go時預設設定。 goroot是安裝go的路徑。

將gopath設定到所需目錄。現在,讓我們將其新增到〜/ workspace資料夾中。

export gopath=~/workspace

cd ~/workspace

在我們剛剛建立的工作空間資料夾中,使用以下**建立檔案main.go.

go mods

從1.11版開始,引入了 go mods。 go mod為go軟體包提供了依賴管理解決方案。

使用go mod時,我們不需要通過匯出gopath env變數來宣告工作空間。

要使用go mod初始化專案,我們可以使用以下命令:

這將建立乙個檔案go.mod,您可以在其中管理依賴項:

我們可以使用require關鍵字指定依賴項:

require // package for grpc

現在讓我們從乙個問候世界開始學習此golang教程:

hello world!

package main

import (

「fmt」

)func main()

在上面的示例中,fmt是go中的內建軟體包,實現了用於格式化i / o的功能。

讓我們看看執行此檔案。我們可以通過兩種方式執行go命令。眾所周知,go是一種編譯語言,因此在執行它之前我們首先需要對其進行編譯。

go build main.go

這將建立乙個二進位制可執行檔案main,現在我們可以執行它:

./main

還有另一種更簡單的方法來執行程式。執行命令有助於抽象編譯步驟。您只需執行以下命令即可執行該程式。

go run main.go

golang教程–變數

go中的變數被明確宣告。 go是一種靜態型別的語言。這意味著在變數宣告時檢查變數型別。變數可以宣告為:

var a int

在這種情況下,該值將設定為0。使用以下語法宣告和初始化具有不同值的變數:

var a = 1

此處,變數自動分配為int。我們可以為變數宣告使用簡寫定義:

message := 「hello world」

我們還可以在同一行中宣告多個變數:

golang教程–資料型別

像任何其他程式語言一樣,golang支援各種不同的資料結構。讓我們在此golang教程中探索其中的一些:

數字,字串和布林值

一些受支援的數字儲存型別為int,int8,int16,int32,int64, uint,uint8,uint16,uint32,uint64,uintptr…

字串型別儲存位元組序列。它用關鍵字string表示和宣告。

布林值使用關鍵字bool儲存。

golang還支援複數型別資料型別,可以使用complex64和complex128進行宣告。

var a bool = true

var b int = 1

var c string = 「hello world」

var d float32 = 1.222

var x complex128 = cmplx.sqrt(-5 + 12i)

陣列,切片和對映

陣列是具有相同資料型別的元素序列。陣列在宣告中定義了固定長度,因此不能擴充套件超過該長度。陣列宣告為:

var a [5]int

陣列也可以是多維的。我們可以簡單地使用以下格式建立它們:

var multid [2][3]int

對於執行時陣列值更改的情況,陣列是有限制的。陣列也不提供獲取子陣列的能力。為此,golang具有稱為切片的資料型別。

切片儲存一系列元素,並且可以隨時擴充套件。切片宣告類似於陣列宣告-未定義容量:

var b int

這將建立零容量和零長度的切片。切片也可以用容量和長度來定義。我們可以使用以下語法:

numbers := make(int,5,10)

在此,切片的初始長度為5,容量為10。

切片是對陣列的抽象。切片使用陣列作為基礎結構。切片包含三個組成部分:容量,長度和指向基礎陣列的指標,如下圖所示:

可以通過使用附加或複製功能來增加切片的容量。附加函式將值新增到陣列的末尾,並在需要時增加容量。

增加切片容量的另一種方法是使用複製功能。只需建立另乙個更大容量的切片,然後將原始切片複製到新建立的切片中:

// create a new slice

number2 := make(int, 15)

// copy the original slice to new slice

copy(number2, number)

我們可以建立切片的子切片。只需使用以下命令即可完成此操作:

package main

import (

「fmt」

)func main()

fmt.println(number2) // -> [1 2 3 4]

// create sub slices

slice1 := number2[2:]

fmt.println(slice1) // -> [3 4]

slice2 := number2[:3]

fmt.println(slice2) // -> [1 2 3]

slice3 := number2[1:4]

fmt.println(slice3) // -> [2 3 4]

}對映是go中的一種資料型別,它將鍵對映到值。我們可以使用以下命令定義地圖:

var m map[string]int

這是新的對映變數,其鍵為字串,值是整數。我們可以輕鬆地向對映新增鍵和值:

詳情參閱

C語言教程(三)

主要普及c語言的基本語法,本文預設初看的人啥也不懂,如果有程式設計基礎請略過 下面來仔細看一下c編輯器預設給我們生成的 include int main 執行後可以在控制台看見 hello word於是可以做以下嘗試根據程式的變化來逐一了解 的含義 注釋printf hello word n inc...

C語言教程 迴圈

c語言中有2種最常用的迴圈語句 while迴圈 和for 迴圈。while迴圈 while loop while 表示式 程式塊還有乙個變種 do while迴圈,do while 表示式 只要while裡得到表示式是真的,就一直執行程式塊的語句。for迴圈 for loop for 表示式1 表示...

go 語言教程於安裝

go 是乙個開源的程式語言,它能讓構造簡單 可靠且高效的軟體變得容易。go是從2007年末由robert griesemer,rob pike,ken thompson主持開發,後來還加入了ian lance taylor,russ cox等人,並最終於2009年11月開源,在2012年早些時候發布...