go語言的特性

1、golang語言特性python

 1. 垃圾回收linux

a、內存自動回收,不再須要開發人員管理內存  //開發代碼中不能存在無引用的變量,否則代碼出錯golang

b、開發人員專一業務實現,下降了心智負擔併發

c、只須要new分配內存,不須要釋放函數

2. 自然併發ui

a、從語言層面支持併發,很是簡單編碼

b、goroute,輕量級線程,建立成千上萬個goroute成爲可能spa

c、基於CSP(Communicating Sequential Process)模型實現(基於goroute、channel)線程

併發實例:3d

不須要擔憂編碼問題,全是utf-8

:=  至關於變量的聲明和賦值

在go名稱中不建議使用下劃線 _

//單行註釋

/*   */多行註釋

go  fmt -w filename   格式化代碼文件(排版)

package main

import(
    "time"
    "fmt"
)

func test_goroute(a int) {
    fmt.Println(a)
}

func main() {

    for i := 0; i < 100; i++ {
        go test_goroute(i)
    }

    time.Sleep(time.Second)
}

 3. channel(管道,進程間的通訊)

a、管道,相似unix/linux中的pipe

b、多個goroute之間經過channel進行通訊

c、支持任何類型

func main() {
  pipe := make(chan int,3)  //make  分配內存空間
  pipe <- 1                 //向管道里面扔數值
  pipe <- 2 // len(pipe) 管道的長度
t1 =<- pipe //取管道里面的數據 
}

管道的傳值:

main/main.go

package main

import(
    "go_dev/day1/goroute_example/goroute"
    "fmt"
)


func main() {
    var pipe chan int
    pipe = make(chan int, 1)
    go goroute.Add(100, 300, pipe)

    sum := <- pipe
    fmt.Println("sum=", sum)
}

goroute/add.go 

package goroute


func Add(a int, b int, c chan int) {

    sum := a +b
    c <- sum
}

4. 多返回值

  一個函數返回多個值

main/main.go

package main
import(
    "go_dev/day1/package_example/calc"  //調用其餘包,路徑根據GOPANTH不用寫src,直接從src目錄下開始
"fmt" ) func main() { sum,_ := calc.Add(100, 300) //接收返回值得一個,_沒有值,打印報錯 fmt.Println("sum=",sum) }

calc/Add.go

package calc
func Add(a int, b int) (int,int) { return a + b,a - b
}

2、包的概念

一、和python同樣,把相同功能的代碼放到一個目錄,稱之爲包

二、包能夠被其餘包引用(包內的變量名必須是大寫開頭,才能被其餘包調用)

三、main包是用來生成可執行文件,每一個程序只有一個main包

四、包的主要用途是提升代碼的可複用性

 

3、包的編譯

 創建以下目錄結構:

將project添加到GOPATH的環境變量中

而後在PROJECT下編譯代碼:

go  build   godev/day1      //由於添加了GOPATH環境變量,能直接找到src文件,因此不用寫src,直接編譯包含main包的庫就是了。

go build  -o  bin/day1.exe   godev/day1     // 將編譯文件保存在PROJECT/bin下,並制定編譯後的文件名

編譯完成後,會生成day1.exe文件,.\day1.exe執行

相關文章
相關標籤/搜索