1. 程式人生 > >go語言基本介紹

go語言基本介紹

imp Python一 格式 解壓 單行 clas sum ret 輕量

Golang發展歷史

1. 誕生歷史
a. 誕生與2006年1月2號下午15點4分5秒
b. 2009發布並正式開源
c. 2012年第一個正式版本Go 1.0發布
d. 截至到2017年8月24號Go 1.9版本正式

GO環境搭建

1. Go安裝

a. 打開Golang官網, https://golang.org/dl/
b. 選擇window安裝包進行下載
c. 雙擊安裝

https://github.com/pingguoxueyuan/gostudy/tree/master/listen1

2. Git 工具安裝

a. 有效的、分布式的代碼管理工具
b. 下載地址:https://git-scm.com/downloads
c. 點擊安裝包進行安裝

3. IDE搭建(vscode)


a. 打開?址:https://code.visualstudio.com/
b. 根據操作系統選擇對應的安裝包
c. 點擊安裝包進?安裝(linux直接解壓)
d. 選擇查看-》擴展-》搜索go,安裝第2個

4. GOPATH設置


a. GOPATH是一個環境變量,用來表明go項目的存放路徑

b. GOPATH路徑最好只設置一個,所有的項目都放到GOPATH的src目錄下

c. GOPATH的目錄結構介紹

技術分享圖片

技術分享圖片

第一個程序

package main

import "fmt"

func main(){
    fmt.Println("hello world
") }

包的概念

1. 和python一樣,把相同功能的代碼放到同一個目錄,稱之為包
2. 包可以被其他包引用
3. main包是用來生成可執行文件,每個程序只有一個main包
4. 包的主要用途是提高代碼的可復用性

GO 命令的基本介紹

a. go run 快速執行go文件,就像執行腳本一樣
b. go build 編譯程序,生成二進制執行文件
c. go install 安裝可執行文件到bin目錄

d. go test 執行單元測試 和 壓力測試
b. go env 顯示go相關的環境變量
c. go fmt 格式化源代碼

GO 程序結構

GOPATH 目錄下

技術分享圖片

a. go源碼按package進行組織,並且package要放到非註釋的第一行

b. 一個可執行程序只有一個main包和一個main函數

c. main函數是程序的執行入口

技術分享圖片

註釋

b. 多行註釋 /* */
a. 單行註釋

GO 語言的特性

1. 垃圾回收

a. 內存自動回收,再也不需要開發人員管理內存
b. 開發人員專註業務實現,降低了心智負擔
c. 只需要new分配內存,不需要釋放

2. 天然並發

a. 從語言側面支持並發,非常簡單,只需要go一下
b. goroutine,輕量級線程,創建成千上萬個goroute成為可能

模板

func calc() { 
 //?量計算
} 
func main() { 
 go calc()
}

舉例

1.串行

package main

import "fmt"
import "time"

func aa(){
    for i:=0; i<=10;i++{
        time.Sleep(1*time.Second)
        fmt.Println("執行", i , "") 
    }
    fmt.Println("aa is ok")
}

func main(){
    aa()
    fmt.Println("主函數執行完了")
}

結果

技術分享圖片

使用go 實現"並發"

package main

import "fmt"
import "time"

func aa(){
    for i:=0; i<=10;i++{
        time.Sleep(1*time.Second)
        fmt.Println("執行", i , "") 
    }
    fmt.Println("aa is ok")
}

func main(){
    go aa()  // 只需要加上 go就可以了
    fmt.Println("主函數執行完了")
    time.Sleep(15*time.Second)
}

結果

技術分享圖片

3. channel

a. 管道,類似unix/linux中的pipe
b. 多個goroute之間通過channel進行通信
c. 支持任何類型

4. 多返回值

a. 一個函數返回多個值

返回一個值

package main

import "fmt"

func add(a int, b int) int {
    return a + b
}

func main(){
    sum := add(3, 6)
    fmt.Println(sum)
}

返回多個值

package main

import "fmt"

func add(a int, b int) int {
    return a + b
}

func aa(a int, b int) (int, int) {
    return a +b , a-b
}

func main(){
    sum := add(3, 6)
    he, cha := aa(6, 9)
    fmt.Println(sum)
    fmt.Println(he, cha)
}

5. 編譯性語言

1.性能只比c差10%

2. 開發效率和python, php差不多

go語言基本介紹