go學習總結(七)

2021-10-02 11:29:37 字數 1606 閱讀 1528

1.斐波拉契閉包

package main

import "fmt"

// 返回乙個「返回int的函式」

func fibonacci() func() int

}func main()

}///

package main

import "fmt"

func main()

}

2.指標函式

package main

import (

"fmt"

"math"

)type vertex struct

func abs(v vertex) float64

func scale(v *vertex, f float64)

func main()

fmt.println(1,v)

scale(&v, 10)//生成乙個指向v的指標&v

fmt.println(4,&v)

fmt.println(5,abs(v))

}

3.介面

介面型別 是由一組方法簽名定義的集合。

介面型別的變數可以儲存任何實現了這些方法的值。

package main

import (

"fmt"

"math"

)type abser inte***ce

func main() //初始化定義,v=sqrt(3*3+4*4)=5

a = f // a myfloat 實現了 abser,a=sqrt(2)

fmt.println(a.abs())//呼叫abs,返回sqrt(2)

a = &v // a *vertex 實現了 abser,a=&vertex

// 下面一行,v 是乙個 vertex(而不是 *vertex)

// 所以沒有實現 abser。

//a = v

fmt.println(a.abs())//呼叫abs,返回5

}type myfloat float64

func (f myfloat) abs() float64

return float64(f)

}type vertex struct

func (v *vertex) abs() float64

4.介面的隱式實現

型別通過實現乙個介面的所有方法來實現該介面。既然無需專門顯式宣告,也就沒有「implements」關鍵字。

隱式介面從介面的實現中解耦了定義,這樣介面的實現可以出現在任何包中,無需提前準備。

因此,也就無需在每乙個實現上增加新的介面名稱,這樣同時也鼓勵了明確的介面定義。

package main

import "fmt"

type i inte***ce

type t struct

// 此方法表示型別 t 實現了介面 i,但我們無需顯式宣告此事。

func (t t) m()

func main()

i.m()

}

go學習總結(九)

1.實現reader型別 package main import golang.org x tour reader type myreader struct todo 給 myreader 新增乙個 read byte int,error 方法 func r myreader read b byte...

Go語言學習筆記 七

注意 有些時候我會省略main函式 1 func functionnanme parametername type returntype 其中引數列表和返回值列表是可選 兩個數相加 1 func add a int,b int int5 func main 多返回值 1 func calc a,b ...

go學習 goroutine併發學習總結

go最大的特性就是併發了,所以這一塊是go的重點知識,我自己花了一些時間,好好學習這個基礎知識。文章內容為個人學習理解,所以文章如果有不對之處,非常感謝指出。說起go併發,一般都會指go協程,即goroutine,而實現goroutin的關鍵字就是go。我學習go併發用到的關鍵字總結 sync.mu...