Google創造Golang的緣由:
- 計算機硬件技術更新頻繁,性能提升很快。目前主流的編程語言發展明顯落後於硬件,不能合理利用多核多CPU的優點提高軟件系統性能。
- 軟件系統複雜度愈來愈高,維護成本愈來愈高,目前缺少一個足夠簡潔高效的編程語言。【現有的編程語言;風格不統一;計算能力不夠;處理大併發不夠好】
- 企業運行維護不少c/c++的項目,c/c++程序運行速度雖然很快,可是編譯速度卻很慢,同時還存在「內存泄漏」的一系列的困擾須要解決。
Golang的發展歷程:
- 2007年,谷歌工程師Rob Pike,Ken Thomson和Robert Griesemer開始設計一門全新的語言,這是Go語言的最初原型。
- 2009年11月10日,Google將Go語言以開放源代碼的方式向全球發佈。
- 2015年8月19日,Go1.5版發佈,本次更新中移除了「最後殘餘的C代碼」。
- 2017年2月17日,Go語言Go1.8版發佈。
- 2017年8月24日,Go語言Go1.9版發佈。1.9.2版本
- 2018年2月16日,Go語言Go1.10版發佈。
Golang語言的特色:
Go語言保證了既能達到靜態編譯語言的安全和性能,又能達到動態語言開發維護的高效率;至關於Go=C+Python,說明Go語言既有C靜態語言程序的運行速度,又能達到Python動態語言的快速開發。java
- 從語言中繼承了不少理念,包括表達式語法,控制結構,基礎數據類型,調用參數傳值,指針等等,也保留了和C語言同樣的編譯執行方式及弱化的指針。
舉一個案例: //go 語言的指針的使用特色:
func testPtr(num *int) {
*num=20
}
- 引入包的概念,用於組織程序結構,Go語言的一個文件都要歸屬於一個包,而不能單獨存在。
package main //一個go文件須要在一個包;
import 「fmt」
func sayok() {
//輸出一句話
fmt.Println("ok")
}
- 垃圾回收機制,內存自動回收,不須要開發人員管理。
- 自然支持大併發。
1)從語言層面支持併發,實現簡單;
2)goroutine,輕量級線程,可實現大併發處理,高效利用多核;
3)基於CPS併發模型(Communicating Sequential Processes)實現;
4)吸取了管道通信機制,造成Go語言特有的管道channel,經過管道能夠實現不一樣的goroute之間的相互通訊;
5)函數能夠返回多個值;舉例: //寫一個函數,實現同時返回 和,差;
//go 函數支持返回多個值;
func getSumAndSub(n1 int,n2 int) (int,int) {
sum := n1 + n2 //go 語言後面不要帶分號;
sub := n1 - n2
return sum , sub
}
6)新的創新,好比切片 slice,延時執行 defer;linux
Golang的開發工具的介紹:
- 工具介紹
1)visual studio code(vscode)Microsoft產品:一個運行於Mac OS X,Windows和Linux之上的,默認提供Go語言的語法高亮,安裝Go語言插件,還能夠智能提示,編譯運行等功能;
2)Sublime Text,能夠免費試用,默認也支持Go代碼語法高亮,只是保存次數達到必定數量以後就會提示是否購買,點擊取消繼續使用,和正式註冊版本沒有任何區別;
3)Vim,Vim是從vi發展出來的一個文本編輯器,代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被普遍使用;
4)Emacs,Emacs傳說中的神器,它不只僅是一個編輯器,由於功能強大,可稱它爲集成開發環境;
5)Eclipse IDE工具,開源免費,並提供GoEclipse插件;
6)LiteIDE, LiteIDE是一款專門爲Go語言開發的跨平臺輕量級集成開發環境(IDE),是國人開發的;
7)JetBrains公司的產品:PhpStrom、WebStrom和PyCharm等IDE工具,都須要安裝Go插件;
工具選擇:
- 如何選擇開發工具
先選擇用visual studio code或者vim文本編輯器本,到對Go語言有必定了解後,再使用Eclipse等IDE開發工具。
- 爲何要這樣選擇
1)更深入的理解Go語言技術,培養代碼感;
2)有利於公司面試,如今寫代碼;
VSCode的安裝和使用:
到下載地址選擇適合本身系統的VSCode安裝軟件:
https://code.visualstudio.com/download
安裝到D盤指定路徑,安裝便可使用。
在實際開發中,能夠在windows開發好程序,而後部署到linux下。c++
下載SDK工具包:
- 介紹SDK
1)SDK的全程(Software Development Kit 軟件開發工具包);
2)SDK是提供給開發人員使用的,其中包含了對應開發語言的工具包;
- 下載SDK工具包
Go語言的官網是:golang.org,可是訪問很慢;這裏選擇中國的下載地址:Golang中國,https://golang.google.cn/
我下載的是1.9.2版本的,選擇windows的zip包,解壓到指定路徑便可使用。
- windows下配置環境變量
1)配置環境變量介紹
根據windows系統在查找可執行程序的原理,能夠將Go所在路徑定義到環境變量中,讓系統幫咱們去找運行執行的程序,這樣在任何目錄下均可以執行go指令。
2)配置環境變量 GOROOT:指定SDK的安裝路徑D:\golang\go1.9.2.windows-amd64\go;
Path:添加SDK的/bin目錄;%GOROOT%\bin;
GOPATH:工做目錄,未來咱們的go項目的工做路徑D:\gocode;
3)打開DOS命令測試程序員
C:\Users\Administrator>go version
go version go1.9.2 windows/amd64
-
linux下配置環境變量golang
vim /etc/profile
export GOROOT=/opt/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=$HOME/goproject
source /etc/profile
Go語言快速開發入門:
- 需求
要求開發一個hello.go程序,能夠輸出「hello,world」
- 步驟
對上圖的說明:
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」
- 編譯執行
1)先編譯再執行(兩步較快) D:\gocode>go run hello.go
hello,world
D:\gocode>hello.exe
hello,world
2)編譯執行(一步較慢)面試
D:\gocode>hello.exe
hello,world
3)兩種執行流程的方式區別
① 若是先編譯生成了可執行文件,那麼能夠將該可執行文件拷貝到沒有go開發環境的機器上,仍然能夠執行;
② 若是是經過go run直接執行go源代碼,那麼若是要在另一個機器上這麼運行,也須要go開發環境,不然沒法執行;
③ 在編譯時,編譯器會將程序運行依賴的庫文件包含在可執行文件中,因此,可執行文件變大了不少。編程
- Go程序開發的注意事項
1)Go源文件以「go」爲擴展名;
2)Go應用程序的執行入口是main()函數,這個相似於其餘編程語言(好比java/C)
3)Go語言嚴格區分大小寫;
4)Go語言由一條條語句構成,每一個語句後不須要分號(Go語言會在每行後自動加分號),這也體現出Golang的簡潔性;
5)Go編譯器是一行行進行編譯的,所以咱們要一行就寫一條語句,不能把多條語句寫在同一行,不然報錯;
6)go語言定義的變量或者import的包若是沒有使用到,代碼不能編譯經過;
7)大括號都是成對出現的,缺一不可。
Go語言的轉義字符(escape char):
1)\t:表示一個製表符,一般使用它排版;
2)\n:換行符;
3)\:表示一個\
4)\":表示一個"
5)\r:表示一個回車
vim
D:\gocode>go run test01.go
張飛厲害雪山飛狐
案例:
windows
D:\gocode>go run test02.go
姓名 年齡 籍貫 住址
john 12 河北 北京
Golang語言註釋:
- 行註釋
基本語法:
// 註釋內容
舉例:
- 塊註釋
基本語法: /*
註釋內容
*/
舉例:
安全
- 使用細節
① 對於行註釋和塊註釋,被註釋的文字,不會被Go編譯器執行;
② 塊註釋裏面不容許有塊註釋嵌套。
規範的代碼風格:
- 正確的註釋和註釋風格
1)Go官方推薦使用行註釋來註釋整個方法和語句;
2)Go的源代碼就是使用行註釋的。
- 正確的縮進和空白
1)使用tab鍵進行縮進;若是須要多行縮進,全選而後按shift+tab鍵向左移,而後按一次tab鍵實現縮進;
2)使用gofmt進行格式化:gofmt -w 將格式化後的內容寫入到文件中。
- 運算符兩邊習慣加一個空格
var num = 2 + 4 * 5
- Go語言的代碼風格
正確的寫法: func main() {
fmt.Println("hello,world!")
}
錯誤的寫法:
func main()
{
fmt.Println("hello,world!")
}
-
一行最長不超過80個字符,超過的使用換行展現,保持格式優雅
運行輸出仍是一行:
package main
import "fmt"
func main() {
//fmt.Println("hello,world!")
fmt.Println("helloworldhelloworldhelloworldhellow",
"orldhelloworldhelloworldhelloworldhelloworldhell",
"oworldhelloworldhelloworldhelloworldhelloworldhe",
"lloworldhelloworldhelloworldhelloworldhelloworldh",
"elloworldhelloworldhelloworld")
}
運行輸出以分割的樣式展現:
package main
import "fmt"
func main() {
//fmt.Println("hello,world!")
fmt.Println("helloworldhelloworldhelloworldhellow\n",
"orldhelloworldhelloworldhelloworldhelloworldhell\n",
"oworldhelloworldhelloworldhelloworldhelloworldhe\n",
"lloworldhelloworldhelloworldhelloworldhelloworldh\n",
"elloworldhelloworldhelloworld")
}
Go語言管方指南:
- Golang官網:(須要×××才能訪問)
https://golang.org
- Golang中文官方指南
https://tour.go-zh.org/welcome/1
- 解釋術語:API
API:Application Program Interface=應用程序編程接口;
就是咱們Go語言中的各個包的各個函數。
- Golang標準庫API文檔
1)API是Golang提供的基本編程接口;
2)Go語言提供了大量的標準庫,所以google公司也爲這些標準庫提供了相應的API文檔,用於告訴開發者如何使用這些標準庫,以及標準庫包含的方法;
3)Golang中文網在線標準庫文檔:https://studygolang.com/pkgdoc
4)Golang的包和源文件和函數的關係
包和源文件一一對應,源文件裏包含函數源代碼。
本章知識回顧:
- Go語言的SDK是什麼?
SDK就是軟件開發工具包;咱們作開發,首先須要先安裝並配置好SDK。
- Golang環境變量配置及其做用?
GOROOT:指定go sdk安裝目錄;
Path:指定SDK\bin目錄,go.exe、godoc.exe、gofmt.exe;
GOPATH:就是Golang工做目錄,咱們全部項目的源碼都在這個目錄下。
- Golang程序的編寫、編譯、運行步驟是什麼?可否一步執行?
編寫:就是寫代碼;
編譯:go build 源碼 ==》生成一個二進制的可執行文件;
運行:對可執行文件運行 xx.exe ./執行文件;go run 源碼。
- Golang程序編寫的規則1)go文件的後綴是 .go;2)go程序區分大小寫;3)go的語句後,不須要帶分號;4)go定義的變量,或者import包,必須使用,若是沒使用就會報錯;5)go中,不要把多條語句放在同一行,不然報錯;6)go中的大括號成對出現。