數據結構和算法在計算機科學裏,有很是重要的地位。此係列文章嘗試使用 Golang 編程語言來實現各類數據結構和算法,而且適當進行算法分析。git
咱們會先簡單學習一下Golang,而後進入計算機程序世界的第一個大門。github
咱們只學Golang
語言的一個子集,足以開展接下來數據結構和算法的實現便可。golang
Golang
語言是谷歌Google
公司在2007年啓動,並在2009年正式發佈並開源
的高級編程語言。開源地址:https://github.com/golang/go,官網地址:https://golang.org。算法
Golang
語言語法簡單,支持多平臺交叉編譯(Linux/Mac/Windows),支持內存自動GC
(垃圾回收),支持嵌C/C++
開發,而且實現了語法層面的線程調度,開發多線程程序十分方便。語法很像C/Python/JavaScript
等高級編程語言。編程
設計這門語言的設計者有如下幾位:segmentfault
Ken Thompson
:在貝爾實驗室與Dennis M. Ritche
發明了C
語言和Unix
操做系統,與Rob Pike
發明了UTF-8
編碼,圖靈獎得主。Rob Pike
:也參與開發了Unix
操做系統,UTF-8
編碼發明者之一。Robert Griesemer
:參與過V8 JavaScript
引擎和Java HotSpot
虛擬機的研發。前兩位比較知名,如今都已經退休了,其餘人有興趣能夠谷歌一下。數組
安裝Golang:https://golang.org/dl:Windows 操做系統點擊msi
按提示安裝,Mac 操做系統能夠使用brew install golang
安裝。數據結構
打開命令行終端輸入:多線程
go version
顯示如下結果即爲成功:併發
go version go1.13 darwin/amd64
在任一文件夾下新建一個文件main.go
(Golang
語言編寫的程序文件後綴必須都爲.go
):
package main import ( "fmt" "time" ) func init() { fmt.Println("init will be before hello world") } func main() { fmt.Println("hello world") fmt.Println("today times:" + time.Now().String()) }
打開命令行終端進行編譯:
go build main.go
編譯後會在本地文件夾下生成一個二進制文件:main
或者main.exe
(Windows系統)。
執行二進制:
./main
將會打印出如下結果:
init will be before hello world hello world today times:2019-12-09 13:14:14.383118 +0800 CST m=+0.000199077
每學一門編程語言,都離不開學習它的語言特徵:
基本數據類型
,如整數,浮點數,布爾值,字符串,支持哪些高級數據類型,如數組,結構體等。if
判斷和while
循環語句是怎樣的,是否有switch
或者goto
等語句。函數
的定義是怎樣的,如何傳遞函數參數,有沒有面向對象
的語言特徵等。package
包管理是怎樣的,如何管理一個工程,官方提供哪些標準庫,如時間處理,字符串處理,HTTP 庫,加密庫等。我是陳星星,歡迎閱讀我親自寫的 數據結構和算法(Golang實現),文章首發於 閱讀更友好的GitBook。