1,Go語言的核心開發團隊-三個大牛
Ken Thompson(肯·湯普森):1983年圖靈獎(Turing Award)和1998年美國國家技術獎(National Medal of Technology)得主。他與Dennis Ritchie是Unix的原創者。Thompson也發明了后來衍生出C語言的B程序語言,同時也是C語言的主要發明人。
Rob Pike(羅布·派克):曾是貝爾實驗室(Bell Labs)的Unix團隊,和Plan9操作系統計划的成員。他與Thompson共事多年,並共創出廣泛使用的UTF-8字元編碼。
Robert Griesemer:曾協助制作Java的HotSpot編譯器,和Chrome瀏覽器的JavaScript引擎V8。
2,Go語言特點或優勢
1)可直接編譯成機器碼,不依賴其他庫,glibc的版本有一定要求,部署就是扔一個文件上去就完成了;
2)Go 語言是既能到達靜態編譯語言的安全和性能,又達到了動態語言開發維護的高效率,靜態類型的語言就是可以在編譯的時候檢查出來隱藏的大多數問題,動態語言的感覺就是有很多的包可以使用,寫起來的效率很高;
3)天然並發(重要特點);
(1)從語言層面支持並發,實現簡單
(2)goroutine,輕量級線程,可實現大並發處理,高效利用多核。
(3)基於CPS並發模型(Communicating Sequential Processes)實現
4)內置runtime,支持垃圾回收;
5)從C語言中繼承了很多理念,包括表達式語法,控制結構,基礎數據類型,調用參數傳值,指針等等,也保留了和C語言一樣的編譯執行方式及弱化的指針,並且內嵌C支持,Go里面也可以直接包含C代碼,利用現有的豐富的C庫;
//go 語言的指針的使用特點(體驗) func testPtr(num*int){ *num=20 }
6)引入包的概念,用於組織程序結構,Go 語言的每一個文件都要歸屬於一個包,而不能單獨存在;
7)新的創新:比如切片slice、延時執行defer。
3,安裝開發環境
SDK 下載地址:Golang 中國 https://www.golangtc.com/download
其中bin目錄下就是go的指令,src目錄下就是源代碼
使用go.exe可以編譯和運行我們的go源碼
添加環境變量
測試
4,hello world測試
1)開發時,先建立相對規范的目錄結構
2)編寫代碼(這里使用的編輯工具是VSCoce,https://code.visualstudio.com/download)
(1)go文件的后綴是.go
(2)package main表示該hello.go文件所在的包是main,在go中,每個文件都必須歸屬於一個包。
(3)import“fmt”
表示:引入一個包,包名fmt,引入該包后,就可以使用fmt包的函數,比如:fmt.Println
(4)func main(){
}
func是一個關鍵字,表示一個函數。
main是函數名,是一個主函數,即我們程序的入口。
(5)fmt.Println(“hello, world”)
表示調用fmt包的函數Println輸出“hello,world”
3)通過go build命令對該go文件進行編譯,生成.exe文件
4)運行hello.exe文件即可
5)注意:通過go run命令可以直接運行hello.go程序[類似執行一個腳本文件的形式]
Go語言中包含了大量用於處理Go語言代碼的命令和工具。其中,go命令就是最常用的一個,它有許多子命令。這些子命令都擁有不同的功能,如下所示。 build:用於編譯給定的代碼包或Go語言源碼文件及其依賴包。 clean:用於清除執行其他go命令后遺留的目錄和文件。 doc:用於執行godoc命令以打印指定代碼包。 env:用於打印Go語言環境信息。 fix:用於執行go tool fix命令以修正給定代碼包的源碼文件中包含的過時語法和代碼調用。 fmt:用於執行gofmt命令以格式化給定代碼包中的源碼文件。 get:用於下載和安裝給定代碼包及其依賴包(提前安裝git或hg)。 list:用於顯示給定代碼包的信息。 run:用於編譯並運行給定的命令源碼文件。 install:編譯包文件並編譯整個程序。 test:用於測試給定的代碼包。 tool:用於運行Go語言的特殊工具。 version:用於顯示當前安裝的Go語言的版本信息。
5,Golang執行流程分析
有了go源文件,通過編譯器將其編譯成機器可以識別的二進制碼可執行文件,即可以直接運行的文件。
6,go程序開發注意事項
1)Go源文件以"go”為擴展名。
2)Go 應用程序的執行入口是main()函數。
3)Go 語言嚴格區分大小寫。
4)Go方法由一條條語句構成,每個語句后不需要分號(Go語言會在每行后自動加分號),這也體現出Golang的簡潔性。
5)Go編譯器是一行行進行編譯的,因此我們一行就寫一條語句,不能把多條語句寫在同一個,否則報錯
6)go語言定義的變量或者import的包如果沒有使用到,代碼不能編譯通過。
7,go語言的轉義字符(escape char)
1)t:表示一個制表符,通常使用它可以排版。 2)n:換行符 3):一個\ 4)":一個" 5)r:一個回車
8,注釋和代碼規范
1)行注釋
//注釋內容
2)塊注釋(多行注釋)
/* 注釋內容 */
對於代碼的規范,可以看源碼,或者用gofmt命令 來進行格式化
gofmt hello.go
9,API查詢和論壇
https://studygolang.com/pkgdoc
韓順平go語言教程筆記