Go語言(一)
一、Go語言的基本認識
二、基本語法結構
三、包的基本概念
四、Go程式碼執行方式
五、Go語言變數
六、資料型別
一、Go語言的基本認識
Go語言的優點
1、Go 語言保證了既能到達靜態編譯語言的安全和效能,又達到了動態語言開發維護的高效率,使用一個表示式來形容 Go 語言:Go = C + Python ,
說明 Go 語言既有 C 靜態語言程式的執行速度,又能達到了 Python 動態語言的快速開發。
2、總結就是,實現快 + 資源佔用低 + 任意環境都能跑,在很多場景都好使。
Go語言的特點
1、從 C 語言中繼承了很多理念,包括表示式語法,控制結構,基礎資料型別,呼叫引數傳值,指標等,也保留了和 C 語言一樣的編譯執行方式及指標
2、引入包的概念,用於組織程式結構,Go 語言的一個檔案都要歸屬於一個包,而不能單獨存在。
3、垃圾回收機制,記憶體自動回收,不需開發人員管理。
4、Go語言為併發而生:Go語言正是在多核和網路化的時代背景下誕生的,原生支援併發的程式語言。Go語言從底層原生支援併發,無須第三方庫,
開發人員可以很輕鬆地在編寫程式時決定怎麼使用 CPU 資源。
5、吸收了管道通訊機制,形成 Go 語言特有的管道 channel,通過管道channel , 可以實現不同的 goroutine 之間的相互通訊。Go語言的併發是基於 goroutine 的,
goroutine 類似於執行緒,多個 goroutine 中,Go語言使用管道(channel)進行通訊,channel是一種內建的資料結構,可以讓使用者在不同的 goroutine 之間同步傳送訊息。
6、函式可以返回多個值
舉例:
寫一個函式,實現同時返回 和,差
7、新的創新:比如切片 slice、延時執行 defer。
下載地址:
安裝配置:
https://studygolang.com/articles/6165
檢視安裝版本,有輸出安裝成功
二、基本語法結構
hello.go 檔案
讓我們來看下以上程式的各個部分:
1、第一行程式碼 package main 定義了包名。必須在原始檔中第一行指明這個檔案屬於哪個包。
2、下一行 import "fmt" ,匯入一個包,因為要用到包裡面的函式。匯入的包必須使用,不然會報錯,報錯內容imported and not used: "xxx","xxx" 表示包名。
3、下一行 func main(),用func定義一個函式,main 函式是每一個可執行程式所必須包含的,它是Go語言程式的入口函式,也即程式啟動後執行的第一個函式。
4、下一行Println() 可以將字串輸出到控制檯。
5、需要注意的是{不能單獨放在一行,不然會在執行時會產生錯誤。是因為go語言預設在每行結尾自動加上 ‘;’ 分號。
三、包的基本概念
1、基本概念
Go語言是使用包來組織管理原始碼的,任何原始碼檔案(go檔案)必須屬於某個包,同時原始碼檔案的第一行有效程式碼必須是package pacakgeName語句,
通過該語句宣告自己所在的包。Go語言中為我們提供了很多內建包,如 fmt、os、io 等。
2、包的幾個說明:
同一個目錄下的同級的所有go檔案應該屬於一個包;
包的名稱可以跟目錄不同名,不過建議同名;
一個Go語言程式有且只有一個main函式,他是Go語言程式的入口函式,且必須屬於main包,main函式沒有或者存在多個,進行編譯時都會報錯;
3、包的匯入
四、go程式碼執行方式
方式一:對原始碼編譯後再執行,執行流程如下圖:
命令如下:
1、在該原始檔目錄下,通過 go build 對 go 檔案進行編譯。可以指定生成的可執行檔名,在windows 下 必須是 .exe 字尾。
2、如果程式沒有錯誤,沒有任何提示,會在當前目錄下會出現一個可執行檔案(windows 下是.exe ),該檔案是二進位制碼檔案,也是可以執行的程式。
3、如果程式有錯誤,編譯時,會在錯誤的那行報錯。通過報錯,進行除錯
4、執行:
方式二:對原始碼直接 執行 go run 原始碼,Go 的執行流程如下圖
執行方式如下:
對兩種執行流程的方式的說明
1、如果我們先編譯生成了可執行檔案,那麼我們可以將該可執行檔案拷貝到沒有 go 開發環境的機器上,仍然可以執行
2、如果我們是直接 go run go 原始碼,那麼如果要在另外一個機器上這麼執行,也需要 go 開發環境,否則無法執行。
3、在編譯時,編譯器會將程式執行依賴的庫檔案包含在可執行檔案中,所以,可執行檔案變大了很多。
最後:
Go語言程式編寫的幾個簡單規則
1、go 檔案的字尾 xx.go
2、go 程式區分大小寫
3、go 的語句後,不需要帶分號
4、go 定義的變數,或者 import 包,必須使用,如果沒有使用就會報錯
5、go 中,不要把多條語句放在同一行,否則報錯
6、go 中的大括號成對出現,而且風格如下
func main() {
//語句
}
五、Go語言變數
1、變數的定義
定義變數的三種方式:
(1) 第一種:指定變數型別,聲明後若不賦值,使用預設值
(2) 第二種:根據值自行判定變數型別(型別推導)
(3)第三種:省略 var
注意 : 申明的變數必須使用,否則會報錯
2、多變數的宣告
方式一:
方式二:
方式三:
如何函式外宣告多個全域性變數:
3、變數使用的注意事項
(1)作用域內的資料值可以在同一類型範圍內不斷變化
(2)變數在同一個作用域(在一個函式或者在程式碼塊)內不能重名,可以重新賦值,但不能對同一個變數重新宣告
(3)變數的三要素,變數=變數名+值+資料型別
(4)Go語言的變數如果沒有賦初值,編譯器會使用預設值, 比如 int 預設值 0 string 預設值為空串,小數預設為 0