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

簡單了解Go語言中函數作為值以及函數閉包的使用

 更新時間:2015年10月30日 16:15:29   投稿:goldensun  
這篇文章主要介紹了簡單了解Go語言中函數作為值以及函數閉包的使用,是golang入門學習中的基礎知識,需要的朋友可以參考下

函數作為值

Go編程語言提供靈活性,以動態(tài)創(chuàng)建函數,并使用它們的值。在下面的例子中,我們已經與初始化函數定義的變量。此函數變量的目僅僅是為使用內置的Math.sqrt()函數。下面是一個例子:

復制代碼 代碼如下:

package main

import (
   "fmt"
   "math"
)

func main(){
   /* declare a function variable */
   getSquareRoot := func(x float64) float64 {
      return math.Sqrt(x)
   }

   /* use the function */
   fmt.Println(getSquareRoot(9))

}


當上述代碼被編譯和執(zhí)行時,它產生了以下結果:

3

函數閉包
Go編程語言支持匿名函數其可以作為函數閉包。當我們要定義一個函數內聯不傳遞任何名稱,它可以使用匿名函數。在我們的例子中,我們創(chuàng)建了一個函數getSequence()將返回另一個函數。該函數的目的是關閉了上層函數的變量i 形成一個閉合。下面是一個例子:

復制代碼 代碼如下:

package main

import "fmt"

func getSequence() func() int {
   i:=0
   return func() int {
      i+=1
   return i 
   }
}

func main(){
   /* nextNumber is now a function with i as 0 */
   nextNumber := getSequence() 

   /* invoke nextNumber to increase i by 1 and return the same */
   fmt.Println(nextNumber())
   fmt.Println(nextNumber())
   fmt.Println(nextNumber())
  
   /* create a new sequence and see the result, i is 0 again*/
   nextNumber1 := getSequence() 
   fmt.Println(nextNumber1())
   fmt.Println(nextNumber1())
}


當上述代碼被編譯和執(zhí)行時,它產生了以下結果:

1
2
3
1
2

相關文章

  • 詳解Go如何基于現有的context創(chuàng)建新的context

    詳解Go如何基于現有的context創(chuàng)建新的context

    在?Golang?中,context?包提供了創(chuàng)建和管理上下文的功能,那么在GO語言中如何基于現有的context創(chuàng)建新的context,下面小編就來和大家詳細聊聊
    2024-01-01
  • Go實現mongodb增刪改查工具類的代碼示例

    Go實現mongodb增刪改查工具類的代碼示例

    這篇文章主要給大家介紹了關于Go實現mongodb增刪改查工具類的相關資料,MongoDB是一個NoSQL數據庫,它提供了靈活的文檔存儲模型以及強大的查詢和操作功能,需要的朋友可以參考下
    2023-10-10
  • GoLang string類型深入分析

    GoLang string類型深入分析

    string 作為 go 語言中的基礎類型,其實有一些需要反復揣摩的,可能是我們使用的場景太簡單,也可能是我們不需要那可憐的一點優(yōu)化來提高性能,對它也就沒那么上心了
    2023-01-01
  • 詳解Go語言中上下文context的理解與使用

    詳解Go語言中上下文context的理解與使用

    在Go的日常開發(fā)中,Context上下文對象無處不在,這篇文章小編就來帶大家深入了解一下上下文context的理解與使用,文中的示例代碼講解詳細,需要的可以參考下
    2023-10-10
  • Go?1.21.0?新增結構化日志記錄標準庫log/slog使用詳解

    Go?1.21.0?新增結構化日志記錄標準庫log/slog使用詳解

    這篇文章主要為大家介紹了Go?1.21.0?新增結構化日志記錄標準庫log/slog使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • 詳解Go語言的context包從放棄到入門

    詳解Go語言的context包從放棄到入門

    這篇文章主要介紹了Go語言的context包從放棄到入門,本文通過實例演示給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Go語言struct要使用?tags的原因解析

    Go語言struct要使用?tags的原因解析

    這篇文章主要介紹了為什么?Go?語言?struct?要使用?tags,在本文中,我們將探討為什么 Go 語言中需要使用 struct tags,以及 struct tags 的使用場景和優(yōu)勢,需要的朋友可以參考下
    2023-03-03
  • Golang操作Kafka的實現示例

    Golang操作Kafka的實現示例

    本文主要介紹了Golang操作Kafka的實現示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Go語言編程中字符串切割方法小結

    Go語言編程中字符串切割方法小結

    這篇文章主要介紹了Go語言編程中字符串切割方法小結,所整理的方法都來自字符串相關的strings包,需要的朋友可以參考下
    2015-10-10
  • Golang開發(fā)之字符串與切片問題踩坑記錄

    Golang開發(fā)之字符串與切片問題踩坑記錄

    字符串和切片,都是golang常用的兩種內置數據類型,最近在日常工作中,遇到了一個字符串切片導致的問題,記錄一下排查問題的過程,避免后續(xù)在這種場景上踩坑
    2023-07-07

最新評論