中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

GO語言method、interface、reflection、select

發布時間:2020-07-05 20:52:53 來源:網絡 閱讀:324 作者:DBAspace 欄目:編程語言

方法method

-GO方法雖沒有class,依舊有method

-通過顯示說明receiver來實現與某個類型的組合

-只能為同一個包中的類型定義方法

-RECEIVER可以是類型的值或指針

-不存在方法重載

-可以使用值或指針來調用方法,編譯器會自動完成轉換

-從某種意義上來說,方法是函數的語法糖,因為receiver其實就是方法所接收的第一個參數

-如果外部結構和嵌入結構存在同名方法,則優先調用外部結構的方法

-類型別名不會擁有底層類型所附帶的方法

-方法可以調用結構中的非公開字段

##method:

package main
import "fmt"
type A struct {
    Name string
}
type B struct {
    Name string
}
func main() {
    a := A{}
    a.Printa()
}
func (a A) Printa() {
    fmt.Println("A")
}


接口interface

-接口是一個或多個方法簽名的集合


反射reflection



并發concurrency

Channel

-Channel是goroutine溝通的橋梁,大都是阻塞同步的

-通過make創建,close關閉

-Channel是引用類型

package main

import "fmt"

import "time"

func main(){

c :=make(chan bool)

go func(){

fmt.Println("GO GO GO")

c <-true

}()

<-c

time.Sleep(2*time.Second)


}


-可以使用for range 來迭代不斷操作channel

package main

import "fmt"

//import "time"

func main(){

c :=make(chan bool)

go func(){

fmt.Println("GO GO GO")

c <-true

close(c)

}()

for v :=range c{

fmt.Println(v)

}


}


-可以設置單項或雙向通道

-可以設置緩存大小,在未被填滿前不會發生阻塞

package main

import "fmt"

import "runtime"

func main(){

runtime.GOMAXPROCS(runtime.NumCPU())

c :=make(chan bool,10)

for i :=0;i<10;i++{

go Go(c,i)

}

for i :=0;i<10;i++{

<-c

}

}

func Go(c chan bool,index int){

a :=1

for i :=0;i<100000000;i++{

a+=1

}

fmt.Println(index,a)

c<-true


}

等價///

package main

import "fmt"

import "runtime"

import "sync"

func main(){

runtime.GOMAXPROCS(runtime.NumCPU())

wg :=sync.WaitGroup{}

wg.Add(10)

for i :=0;i<10;i++{

go Go(&wg,i)

}

wg.Wait()

}

func Go(wg *sync.WaitGroup,index int){

a :=1

for i :=0;i<100000000;i++{

a+=1

}

fmt.Println(index,a)

wg.Done()


}


Select

-可處理一個或多個channel的發送與接收

-同時有多個可用的channel時按隨機順序處理

-可用空的select來阻塞main函數

-可設置超時


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

闻喜县| 漳平市| 额尔古纳市| 峨眉山市| 清流县| 华安县| 甘孜县| 民勤县| 合作市| 柯坪县| 隆德县| 那坡县| 天津市| 丹凤县| 浏阳市| 漠河县| 靖安县| 留坝县| 连州市| 新源县| 柳河县| 抚州市| 天水市| 铜鼓县| 金坛市| 郎溪县| 克东县| 德化县| 晋中市| 屏东县| 新营市| 观塘区| 彭州市| 张家界市| 商城县| 巨野县| 晋江市| 商丘市| 宝清县| 水城县| 兰西县|