(一)Golang的概述

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動態語言的快速開發。

  • 從語言中繼承了很多理念,包括表達式語法,控制結構,基礎數據類型,調用參數傳值,指針等等,也保留了和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;

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下。

下載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下配置環境變量

    vim /etc/profile
    export GOROOT=/opt/go
    export PATH=$PATH:$GOROOT/bin
    export GOPATH=$HOME/goproject
    source /etc/profile

    Go語言快速開發入門:

  • 需求
    要求開發一個hello.go程序,可以輸出“hello,world”
  • 步驟
    (一)Golang的概述
    對上圖的說明:
    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:表示一個回車
(一)Golang的概述

D:\gocode>go run test01.go
張飛厲害雪山飛狐

案例:
(一)Golang的概述

D:\gocode>go run test02.go
姓名    年齡    籍貫    住址
john    12       河北    北京

Golang語言註釋:

  • 行註釋
    基本語法:
    // 註釋內容
    舉例:
    (一)Golang的概述
  • 塊註釋
    基本語法:
    /*
    註釋內容
    */

    舉例:
    (一)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語言管方指南
    https://tour.go-zh.org/welcome/1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章