濮阳杆衣贸易有限公司

主頁 > 知識庫 > go語言匿名函數(shù)的使用

go語言匿名函數(shù)的使用

熱門標(biāo)簽:中國地圖標(biāo)注省會高清 南通如皋申請開通400電話 西部云谷一期地圖標(biāo)注 學(xué)海導(dǎo)航地圖標(biāo)注 江西轉(zhuǎn)化率高的羿智云外呼系統(tǒng) 高德地圖標(biāo)注口訣 廣州呼叫中心外呼系統(tǒng) 地圖標(biāo)注的汽車標(biāo) 浙江高速公路地圖標(biāo)注
package main
import (
 "fmt"
 "go_code/chapter02/funinit/utils"
)
// 3、全局匿名函數(shù)
var(
 Fun1 = func(n1 int,n2 int) int {
 return n1 * n2
  }
)
// init 函數(shù),通常在init函數(shù)中完成初始化工作
func main(){
 // 1、在定義匿名函數(shù)時就直接調(diào)用,這種方式匿名函數(shù)只能調(diào)用一次
 res1 := func(n1 int,n2 int) int{
 return n1+n2
 }(10,20)
 fmt.Println("res1=",res1)
 // 2、a 的數(shù)據(jù)類型就是函數(shù)類型,此時我們可以通過a 完成調(diào)用
 a := func(n1 int,n2 int) int{
 return n1 + n2
 }
 res2 := a(100,1000)
 fmt.Println("res2=",res2)
 res3 := Fun1(100,1000)
 fmt.Println("res3=",res3)
  fmt.Println("main......")
  fmt.Println("Age is value",utils.Age,"Name is value",utils.Name)
}

沒什么好說的, 見一個,熟悉一個:

package main
import (
 "fmt"
)
func main() {
 func() {
   fmt.Printf("func 1\n")
 }()
 func(x int) {
   fmt.Printf("func 2, x is %d\n", x)
 }(2)
 a := func(x int) int {
   fmt.Printf("func 3, x is %d\n", x)
   return 5
   }
 fmt.Println(a(3))
 fmt.Printf("%T\n", func() {
   fmt.Printf("func 1\n")
 })
 fmt.Printf("%T\n", func(x int) {
   fmt.Printf("func 2, x is %d\n", x)
 })
 fmt.Printf("%T\n", a)
}

結(jié)果:

func 1
func 2, x is 2
func 3, x is 3
5
func()
func(int)
func(int) int

繼續(xù)看:

package main
import (
  "fmt"
)
func main() {
  test(func(x string) {
   fmt.Println(x)
 })
}
func test(f func(string)) {
  f("hello")
}

結(jié)果:hello

但如下都錯誤, 想想為什么:

package main
import (
 "fmt"
)
func main() {
 func() {
   fmt.Printf("func 1\n")
 }
}
package main
import (
  "fmt"
)
func main() {
  test(func g(x string) {
   fmt.Println(x)
 })
}
func test(f func(string)) {
  f("hello")
}

最后, 看看下面兩個正確程序的:

package main
import (
  "fmt"
)
var x = "hello"
func main() {
  test(func (x *string) {
   *x = "world"
 })
 fmt.Println(x)
}
func test(f func(*string)) {
}
package main
import (
  "fmt"
)
func main() {
 var s1 = "hello"
 var s2 = "world"
  test(func(x *string, y *string) {
   *x += "_123"
   *y += "_456"
   }, s1, s2)
  fmt.Println(s1, s2) // hello_123 world_456
}
func test(f func(*string, *string), s1 *string, s2 *string) {
 f(s1, s2)
}
package main
import (
  "fmt"
)
var s1 = "hello"
var s2 = "world"
func main() {
  test(func(x *string, y *string) {
   *x += "_123"
   *y += "_456"
   })
  fmt.Println(s1, s2) // hello_123 world_456
}
func test(f func(*string, *string)) {
 f(s1, s2)
}

不多說。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

您可能感興趣的文章:
  • go代碼實現(xiàn)買房貸款月供計算的方法
  • linux下搭建go環(huán)境的安裝配置講解
  • golang的空標(biāo)識符理解
  • 為什么Go語言把類型聲明放在后面?
  • 用go gin server來做文件上傳服務(wù)
  • 使用go gin來操作cookie的講解
  • 在go中使用omitempty的代碼實例
  • Go語言init函數(shù)詳解
  • Golang命令行進(jìn)行debug調(diào)試操作
  • go panic時如何讓函數(shù)返回數(shù)據(jù)?

標(biāo)簽:吐魯番 保定 德宏 常州 曲靖 貴州 東營 許昌

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《go語言匿名函數(shù)的使用》,本文關(guān)鍵詞  語言,匿名,函數(shù),的,使用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《go語言匿名函數(shù)的使用》相關(guān)的同類信息!
  • 本頁收集關(guān)于go語言匿名函數(shù)的使用的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    丽水市| 玛纳斯县| 格尔木市| 南充市| 大厂| 鸡泽县| 时尚| 游戏| 天镇县| 西盟| 芦山县| 登封市| 马鞍山市| 长春市| 波密县| 峡江县| 屏山县| 湖南省| 台北市| 双桥区| 井陉县| 玉林市| 富蕴县| 阿拉善右旗| 巴南区| 兴安县| 当雄县| 富平县| 元江| 岫岩| 阳信县| 威海市| 玉山县| 盐边县| 方正县| 澎湖县| 平舆县| 襄垣县| 孝感市| 平乡县| 五华县|