(一)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動態語言的快速開發。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」
  • 步驟
    (一)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的概述vim

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

案例:
(一)Golang的概述windows

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語言管方指南:

  • 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中的大括號成對出現。
相關文章
相關標籤/搜索