欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2019年04月02日 10:30:40   作者:itdada  
今天小編就為大家分享一篇關(guān)于go語言匿名函數(shù)的使用,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
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ù)時(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ù)類型,此時(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)
}

沒什么好說的, 見一個(gè),熟悉一個(gè):

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

但如下都錯(cuò)誤, 想想為什么:

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")
}

最后, 看看下面兩個(gè)正確程序的:

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í)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • golang復(fù)制文件夾移動(dòng)到另一個(gè)文件夾實(shí)現(xiàn)方法詳解

    golang復(fù)制文件夾移動(dòng)到另一個(gè)文件夾實(shí)現(xiàn)方法詳解

    這篇文章主要為大家介紹了golang復(fù)制文件夾并移動(dòng)到另一個(gè)文件夾實(shí)現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Golang 實(shí)現(xiàn)Thrift客戶端連接池方式

    Golang 實(shí)現(xiàn)Thrift客戶端連接池方式

    這篇文章主要介紹了Golang 實(shí)現(xiàn)Thrift客戶端連接池方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 簡單聊聊為什么說Go語言字符串是不可變的

    簡單聊聊為什么說Go語言字符串是不可變的

    最近有讀者留言說,平時(shí)在寫代碼的過程中,是會(huì)對字符串進(jìn)行修改的,但網(wǎng)上都說 Go 語言字符串是不可變的,這是為什么呢,本文就來和大家簡單講講
    2023-05-05
  • Golang 類型斷言的具體使用

    Golang 類型斷言的具體使用

    本文主要介紹了Golang 類型斷言的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Go語言快速入門圖文教程

    Go語言快速入門圖文教程

    Go是 Goolge 開發(fā)的一種靜態(tài)型、編譯型、并發(fā)型,并具有垃圾回收功能的語言,Go 語言上手非常容易,它的風(fēng)格類似于 C 語言,Go 語言號(hào)稱是互聯(lián)網(wǎng)時(shí)代的 C 語言,那么它到底有多火呢,一起看看吧
    2021-05-05
  • Go編譯32位GNU靜態(tài)鏈接庫的方法

    Go編譯32位GNU靜態(tài)鏈接庫的方法

    Go鏈接庫系統(tǒng)的難用可謂是人盡皆知,不同Go版本編譯出來的不兼容,而且只支持GNU的,不能編譯出Windows上的dll和lib。這篇文章給大家介紹Go編譯32位GNU靜態(tài)鏈接庫的方法,感興趣的朋友一起看看吧
    2020-05-05
  • golang 中string和int類型相互轉(zhuǎn)換

    golang 中string和int類型相互轉(zhuǎn)換

    這篇文章主要介紹了golang 中string和int類型相互轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • golang中兩個(gè)協(xié)程交替打印數(shù)字和字母的實(shí)現(xiàn)

    golang中兩個(gè)協(xié)程交替打印數(shù)字和字母的實(shí)現(xiàn)

    這篇文章給大家介紹了golang中兩個(gè)協(xié)程交替打印數(shù)字和字母的實(shí)現(xiàn),文中通過代碼示例講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • Go?gin框架加載Html模板文件的方法

    Go?gin框架加載Html模板文件的方法

    這篇文章主要介紹了Go?gin框架加載Html模板文件的方法,Gin框架沒有內(nèi)置靜態(tài)文件服務(wù),但可以使用gin.Static或gin.StaticFS中間件來提供靜態(tài)文件服務(wù),文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-03-03
  • Go語言中配置實(shí)現(xiàn)Logger日志的功能詳解

    Go語言中配置實(shí)現(xiàn)Logger日志的功能詳解

    當(dāng)我們正式開發(fā)go程序的時(shí)候,就會(huì)發(fā)現(xiàn)記錄程序日志已經(jīng)不是fmt.print這么簡單了,所以我們需要專門的去存儲(chǔ)日志文件,這篇文章主要介紹了在Go語言中配置實(shí)現(xiàn)Logger日志的功能,感興趣的同學(xué)可以參考下文
    2023-05-05

最新評論