校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

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

go語言匿名函數的使用

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

結果:

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

繼續看:

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

結果: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)
}

不多說。

總結

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

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

標簽:吐魯番 保定 德宏 常州 曲靖 貴州 東營 許昌

巨人網絡通訊聲明:本文標題《go語言匿名函數的使用》,本文關鍵詞  語言,匿名,函數,的,使用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《go語言匿名函數的使用》相關的同類信息!
  • 本頁收集關于go語言匿名函數的使用的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 安康市| 柞水县| 梓潼县| 噶尔县| 正定县| 驻马店市| 古蔺县| 霍邱县| 怀远县| 江油市| 始兴县| 商都县| 织金县| 新乡市| 和田市| 大城县| 津市市| 康乐县| 满城县| 新丰县| 揭阳市| 伊金霍洛旗| 辽阳县| 商丘市| 望谟县| 株洲县| 萝北县| 玉田县| 邯郸县| 武夷山市| 凉山| 荔浦县| 库车县| 昆山市| 修文县| 马鞍山市| 庆云县| 偃师市| 永济市| 射阳县| 延津县|