Go語言學習筆記-函數(shù)的高級使用方法

Golang支持頭等函數(shù)的機制坠狡。
頭等函數(shù):支持頭等函數(shù)的編程語言,可以把函數(shù)賦值給變量遂跟,也可以把函數(shù)作為其他函數(shù)的參數(shù)或返回值逃沿。

匿名函數(shù)
func main(){
 a:=func(){
   fmt.Println("Hello World!")
}
a()
fmt.Printf("%T",a)
}
  1. 這是把函數(shù)賦值給變量的語法,給a賦值的函數(shù)沒有函數(shù)名稱幻锁,這類函數(shù)稱為匿名函數(shù)凯亮。
    2.調用該函數(shù)的唯一方式就是使用變量a。打印出的a的類型是func()哄尔。
    3.要調用一個匿名函數(shù)且不賦值給變量假消,可以這樣寫:
package main
import(
"fmt"
)
func main(){
  func(){ 
     fmt.Println("hello world!")
    }()
}
自定義的函數(shù)類型

就是取別名,這樣寫
type add func(a int, b int)int
創(chuàng)建的新的函數(shù)類型就是add岭接,參數(shù)是兩個int變量富拗,返回一個int類型。
add新函數(shù)類型的定義和使用:

package main
import(
 "fmt"
 )

type add func(a int, b int)int
func main(){
  var a add = func(a int ,b int) int{
     return a+b
   }
   s := a(5, 6)
  fmt.Println(s)
}
高階函數(shù)

滿足下列條件之一的函數(shù)就是高階函數(shù):
1.接收一個或多個函數(shù)作為參數(shù)
2.返回值就是一個函數(shù)
函數(shù)作為其他函數(shù)的參數(shù)

func simple(a func(a, b int) int) { fmt.Println(a(60, 7))
}

func main() {
  f := func(a, b int) int {
  return a + b }
  simple(f) 
}

函數(shù)作為返回值

func simple() func(a, b int) int {
   f := func(a, b int) int {
       return a + b 
   }
        return f  
}
func main() {
s := simple() 
fmt.Println(s(60, 7))
}
閉包

閉包是匿名函數(shù)的一個特例鸣戴。當一個匿名函數(shù)所訪問的變量定義在函數(shù)體外時啃沪,就稱這樣的匿名函數(shù)為閉包

package main
import ( "fmt"
)
func appendStr() func(string) string {
t := "Hello"
c := func(b string) string {
t=t+""+b
return t }
return c }
func main() {
  a := appendStr()
  b := appendStr() 
  fmt.Println(a("World"))      
  fmt.Println(b("Everyone"))

 fmt.Println(a("Gopher"))
 fmt.Println(b("!")) 
}
頭等函數(shù)的實用

1.過濾一個students切片,篩選條件
選出grade是B的

type student struct { firstName string lastName string grade string country string
}
unc filter(s []student, f func(student) bool) []student {
var r []student
for _, v := range s {
if f(v) == true {
r = append(r, v)
} }
return r }
func main() {
s1 := student{
firstName: "Naveen",
lastName: "Ramanathan", grade: "A",
country: "India",
}
s2 := student{
firstName: "Samuel", lastName: "Johnson", grade: "B",
country: "USA",
}
s := []student{s1, s2}
f := filter(s, func(s student) bool {
if s.grade == "B" { return true
}
return false })
fmt.Println(f)
 }

2.篩選India的student

  c := filter(s, func(s student) bool {
  if s.country == "India" { 
      return true
    }
  return false })
  fmt.Println(c)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末窄锅,一起剝皮案震驚了整個濱河市创千,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌入偷,老刑警劉巖追驴,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異疏之,居然都是意外死亡氯檐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進店門体捏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來冠摄,“玉大人,你說我怎么就攤上這事几缭『佑荆” “怎么了?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵年栓,是天一觀的道長拆挥。 經常有香客問我,道長,這世上最難降的妖魔是什么纸兔? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任惰瓜,我火速辦了婚禮,結果婚禮上汉矿,老公的妹妹穿的比我還像新娘崎坊。我一直安慰自己,他們只是感情好洲拇,可當我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布奈揍。 她就那樣靜靜地躺著,像睡著了一般赋续。 火紅的嫁衣襯著肌膚如雪男翰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天纽乱,我揣著相機與錄音蛾绎,去河邊找鬼。 笑死鸦列,一個胖子當著我的面吹牛租冠,可吹牛的內容都是我干的。 我是一名探鬼主播敛熬,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼肺稀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了应民?” 一聲冷哼從身側響起话原,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诲锹,沒想到半個月后繁仁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡归园,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年黄虱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庸诱。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡捻浦,死狀恐怖,靈堂內的尸體忽然破棺而出桥爽,到底是詐尸還是另有隱情朱灿,我是刑警寧澤,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布钠四,位于F島的核電站盗扒,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜侣灶,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一甸祭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧褥影,春花似錦池户、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽处嫌。三九已至栅贴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間熏迹,已是汗流浹背檐薯。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留注暗,地道東北人坛缕。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像捆昏,于是被迫代替她去往敵國和親赚楚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,576評論 2 349

推薦閱讀更多精彩內容