基礎知識
語言特點:
- 兼具 Python 等動態語言的開發速度和 C/C++ 等編譯型語言的性能與安全性
- 不但能讓你訪問底層操作系統,還提供了強大的網絡編程和併發編程支持
- 通過接口(interface)的概念來實現多態性
- Go語言正是在多核和網絡化的時代背景下誕生的原生支持併發的編程語言。
go擅長:
- 鑑於Go語言的特點和設計的初衷,從以下幾個方面來分析Go語言擅長的領域:
- 在服務器編程方面,Go語言適合處理日誌、數據打包、虛擬機處理、文件系統、分佈式系統、數據庫代理等;
- 網絡編程方面,Go語言廣泛應用於 Web 應用、API 應用、下載應用等;
- 用於內存數據庫和雲平臺領域,目前國外很多雲平臺都是採用 Go 開發。
第一個程序“HELLO WORLD":
Package main
Import "fmt"
Func main(){
Fmt.Printf("Hello,World")
}
異同於其他語言的特徵:
-
函數差異,實例如下圖所示:
1)這個import(導入包)就和python的import一樣,你也可以使用如下這樣的格式:
還有如果你想導入包內的某個函數要使用**“/”符號**,而不是python的“.”,如上圖所示:
這樣使用函數的時候直接使用,rand就好了,而不必使用是math.rand()2)golang需要指明參數類型,但是如果連續的參數的類型是一樣的話,前面的都可以不用說明,直接說明最後一個即可,如下圖所示:
3)這個就有點東西了,很少見語言這樣做的,直接指明返回值的類型,這個作用不僅可以有多個返回值,還可以爲每個返回值命名,如下圖所示:
-
命名變量的不同:
1)變量的定義通常是這個形式:
以var開頭有點像js,var 變量名 類型 = 賦值
2)在函數中,“:=” 簡潔賦值語句在明確類型的地方,可以用於替代 var 定義。 函數外的每個語句都必須以關鍵字開始(var、func、等等),:= 結構不能使用在函數外。
3)如上所說,如果在函數內,明確類型的可以直接用這個。 -
循環結構:
除了沒有()其他幾乎和其他語言無差 -
判斷結構
1)這裏是不需要加()的
2)這裏可以執行一個簡單的語句,(如果是變量的話,只能在這個判斷結構中起作用)
3)作用範圍是有限的。 -
defer
結構:
就會輸出下列結構:
延遲的函數調用被壓入一個棧中。當函數返回時, 會按照後進先出的順序調用被延遲的函數調用。 -
結構體: