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...