Stories

Detail Return Return

「Go學習筆記」2.初識Go - Stories Detail

前言

由於在公司廣泛使用Docker的大環境下,突然對它的編程語言(Go)瞭解下。並且感覺現在Go語言的應用也是越來越廣泛,很多互聯網大廠都在使用,目前利用業餘時間來學習下,主流還是Java,學明白以後可能考慮轉哦?。如果你也感興趣不如一起來學習。

Go介紹

  • 簡史
    Go語言是Google於2009年正式發佈的一款開源的靜態編譯型語言。Go語言最早於2007年Robert Griesemer(Java HotSpot虛擬機、V8引擎開發者之一)和Ken Thompson(貝爾實驗室UNIX團隊成員,C語言、UNIX和Plan9創始人之一)與Rob Pike三人在業餘時間聯合開發。(老外就是吊)時至今日Go語言已完成自舉,社區生態斐然,包括大量拿的出手的殺手鐗級項目(Moby、Docker、Kubernetes、Gogs、Grafana、Etcd)。
  • 特性
  • Go語言擁有自動垃圾回收功能,同時也允許開發人員干預回收操作。
  • Go語言有着更加豐富的內置類型,在錯誤處理方面語法更加精簡高效。
  • Go語言函數支持多個返回值,而函數也是一種類型,可以作為參數傳遞。
  • Go語言對多核處理器編程進行了優化,可以從程序與結構方面來實現併發編程。
  • Go語言初次編譯速度媲美C/C++,甚至二次編譯的速度明顯快於C/C++,同時又擁有接近於Python等解釋型語言的簡潔。
  • 命名規範
    Go語言的項目命名一般採用 【域名+項目名】,例如:github.com/example,這樣命名的目錄一是可以分割項目,不容易重名,二是能夠迅速找到原項目的地址,三是方便獲取代碼包。
  • 代碼強制格式化
    Go語言有一個特色就是強制代碼格式化,在你保存代碼之後,可以使用go fmt工具格式化,當然即使沒有手動格式化,在編譯時,Go語言編譯器也會自動格式化所有源代碼,這種強制格式化的做法可以有效統一編碼風格。

開發環境

目前Go語言支持Linux、FreeBSD、Mac OS、和Windows平台,安裝包可以從 https://golang.google.cn/dl/ 下載。
圖片

基本命令

$ go help
  go是用於管理Go語言源代碼的工具。
  用法:
      go command [arguments]
      
  包含的命令如下:
  - build: 編譯源代碼包和依賴。
  - clean: 刪除對象文件。
  - doc: 顯示Go包或程序實體的文檔。
  - env: 打印輸出Go語言環境的變量信息。
  - bug: bug提交程序。
  - fix: 修復程序。
  - fmt: 格式化源碼包中代碼。
  - generate: 通過掃描Go源碼中的go:generate註釋來識別要運行的常規命令。
  - get: 下載並安裝指定的包與依賴。
  - install: 編譯並安裝指定的包與依賴。
  - list: 打印指定源碼包信息。
  - run: 編譯並運行Go程序。
  - test: 測試一個源碼包。
  - tool: 運行一個指定的tool。
  - version: 打印輸出Go環境版本。

使用"go help [command]"查看每一個命令的使用細節。

- 目錄結構
1. GOROOT結構
  $GOROOT 作為Go語言環境的根目錄,放置了下面這些內容:
    & cd $GOROOT && ls -l
-rw-r--r--    1 root  wheel  55389  9 26 02:52 AUTHORS    # 所有參與Go語言開發的人員名單
-rw-r--r--    1 root  wheel   1339  9 26 02:52 CONTRIBUTING.md    # 為Go語言貢獻代碼的説明
-rw-r--r--    1 root  wheel  84339  9 26 02:52 CONTRIBUTORS   # 所有貢獻者名單
-rw-r--r--    1 root  wheel   1479  9 26 02:52 LICENSE    # Go語言的開源協議
-rw-r--r--    1 root  wheel   1303  9 26 02:52 PATENTS    # Go語言專利説明
-rw-r--r--    1 root  wheel   1607  9 26 02:52 README.md    # 説明文件
-rw-r--r--    1 root  wheel    397  9 26 02:52 SECURITY.md
-rw-r--r--    1 root  wheel      8  9 26 02:52 VERSION    # Go語言版本文件
drwxr-xr-x   19 root  wheel    608  9 26 02:55 api  # Go語言API相關(變量、常量、函數)
drwxr-xr-x    4 root  wheel    128  9 26 02:55 bin   # 用於存儲標準命令執行文件,go、godoc、gofmt三件套
drwxr-xr-x   50 root  wheel   1600  9 26 02:55 doc   # 存放標準庫的文檔
-rw-r--r--    1 root  wheel   5686  9 26 02:52 favicon.ico  # Go語言的圖標
drwxr-xr-x    3 root  wheel     96  9 26 02:55 lib   # 存放一些特殊的庫文件
drwxr-xr-x   16 root  wheel    512  9 26 02:55 misc   # 輔助工具和説明
drwxr-xr-x    6 root  wheel    192  9 26 02:55 pkg    # 存放Go語言標準庫生成的文件
-rw-r--r--    1 root  wheel     26  9 26 02:52 robots.txt    # 禁止搜索引擎索引本地啓動的Go文檔
drwxr-xr-x   71 root  wheel   2272  9 26 02:55 src    # 存放GO語言自己的源代碼
drwxr-xr-x  327 root  wheel  10464  9 26 02:55 test   # 存放測試驗證相關的文件
2. GOPATH結構

  $GOPATH就是一個工作目錄,我們開發GO語言程序就是在這裏進行的,這個目錄一般有三個文件夾:
- bin: 存放go install生成的可執行文件前面把$GOPATH/bin路徑加入PATH環境變量後就可以在全局任意位置使用這個文件夾內的執行文件。
- pkg: 存放go編輯生成的文件。
- src: 存放我們開發的Go項目的源代碼,不用工程項目的代碼已包名區分。

開發工具

  • Visual Studio Code
    來自微軟的開源編輯器Visual Studio Code的確是開發Go語言程序的好工具之一,龐大的生態系統使得它不僅僅是一個編輯器,它還擁有大部分Go語言開發過程中使用的工具鏈。
  • VIM-Go
    VIM編輯器是大部分程序員的最愛之一,在VIM的生態中也有一款比較流行的GO語言開發插件----VIM-GO,安裝這個插件與安裝其他VIM插件的方法一樣。
  • Gogland
    來自著名的Jetbrains公司開發的IDE(Goland)是一款專門為Go語言開發而設計的IDE。
  • LiteIDE
    LiteIDE是一款專門為GO語言開發的跨平台輕量級集成開發環境,LiteIDE是開源的工具,代碼託管在github上。

Add a new Comments

Some HTML is okay.