go語言學習--基礎篇(1)

來源:互聯網
上載者:User

標籤:不能   通過   dev   print   class   expected   path   執行   test   

一,第一個go程式,hello world!!! 

 建立learngo目錄,再建立src,最後編寫hello.go檔案

package mainimport (      "fmt")func main(){     fmt.Printf("hello world!!!")}

從第一個go程式中,我們可以初始認識一下go 語言的程式結構

1,package 聲明go語言的包,

2,import 匯入包

3,func main() {} go語言函數

       在go語言中 需要注意的幾個地方

      (1)packeage main 表示這個包是可以編譯成可執行檔的(可執行檔和庫的區別是,可執行檔編譯完成之後,就可以獨自執行,如果是庫檔案編譯完後只能生產一個lib庫,lib庫只能被其它可執行程式調用)

      (2)go 語言中匯入的包或者定義的變數,函數等,需要在程式中使用,如果沒有使用,程式編譯會報錯。這也是Go語言中遵循極簡的編程思路

編寫完第一個go程式後,如何運行? 找到你編寫的go 檔案,然後執行 go run  src/hello.go(快速執行go 檔案)

 

二,go 語言中命令的常規使用

     (1)go語言環境變數的查看,在windows 下執行go env 即可列出go語言的所有環境變數

              這些變數中最重要的是GOPATH,所有的源碼,程式都放在GOPATH中,GOPATH 路徑最好只設定一個

              另外 go 語言有是跨平台的,在windows 下編寫一個go 程式,完成編譯後,在Linux下任然可以執行

        (2)go build  命令是用來編譯go 程式的,編譯完成之後會產生一個.exe 二進位檔案,這個檔案不論放在那裡都可以執行, go  build   project/webdev/main, 在編譯命令中,只需要寫src 以後的檔案路徑就可以

        (3)go install 命令是安裝可執行檔到bin目錄  go install project/webdev/main,第一次執行go install後GOpath 中會自動產生一個bin 目錄,這個bin 目錄存放所有編譯後的可執行程式

        (4).\ 就可以運行編譯後的可執行檔.exe  檔案

        (5)go test 執行單元測試,源碼檔案名稱中加上_test ,在檔案中定義函數,函數命定義func  Testadd(t *testing.T),go 語言在編譯中不會將測試檔案編譯到其中

       

         測試程式碼範例

package calcimport (    "testing"                                  #匯入testing 模組 )func TestAdd(t *testing.T) {                   #test 函數定義       var sum int       sum = Add(5, 6)                                     if sum != 10 {           t.Fatalf("add is not right, sum:%v expected:11",sum)           #定義出錯時輸出       }       t.Logf("add  is ok")                   #列印正確日誌}

          (6)go fmt 格式化所有源碼,將源碼的格式進行標準化, go fmt  -w ./* 可以目前的目錄下所有檔案都格式化

三,編寫自訂的go 語言套件

          (1)建立一個目錄,例如calc

package cale                          #聲明這個包的名字,最好是和自己所建立的目錄一致func Add(a int, b int) int {          #本句中,前兩個int是聲明參數的資料類型,後一個int為傳回值的類型                                      #go 語言為強型別語言,變數一般都需要指定類型            return a+b}

        (2)建立go的包後,如何在其它代碼中引匯入,(注意,匯入的時候需要把整個包都匯入,不能單獨匯入包中的某個.go檔案)

package mainimport (   "fmt"    cale "project/webdev/calc"             #匯入自訂包(匯入路徑是src之後的路徑)
#路徑前面的cale為包設定別名)func main() { x := calc.Add(1,2) #go 語言中包中的函數的調用,包的名字的.函數匯入 fmt.Printf("x:%d".x)}

        (3)go 語言中包的組織,需要注意,在同一個目錄下,所有的go 源碼檔案中聲名包都只能有一個,即package  包名  只能有一個,如果出現多個,會出現編譯報錯,另外,包的名字為main 而且有func main 這個包編譯完之後是可執行檔

        

四,go 語言多線程的定義

       基於CSP 模型實現

        func calc() {

          //大量計算

        }

       func main() {

           go calc()                  #在函數前面添加go 語句

        }

五,go語言中程式通訊方式----只有管道

    (1)管道,類似unix/linux中的pipe

    (2)多個goroute 之間通過channel進行通訊

    (3)支援go語言中的任何類型

func main() {        pipe := make(chan int,3)              #pip := 定義pip 變數,make  分配空間      pipe <- 1                             #chan 管道,int 為管道中的資料類型,3為管道的記憶體大小      pipe <- 2                             #<- 存入資料
var a int
a <- pipe #讀取管道中的資料}

   六,go語言返回多個值

    go語言中需要在函數定義時就定義傳回值的類型

func calc(a int, b int) (int,int) {              #(int,int)定義傳回值的類型          sum := a+b          avg  := (a+b)/2          return sum, avg                        #返回多個值}

 

go語言學習--基礎篇(1)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.