最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang的匿名函數和普通函數的區(qū)別解析

 更新時間:2023年03月28日 16:23:17   作者:Deng_Xian_Sheng  
匿名函數是不具名的函數,可以在不定義函數名的情況下直接使用,通常用于函數內部的局部作用域中,這篇文章主要介紹了golang的匿名函數和普通函數的區(qū)別,需要的朋友可以參考下

golang的匿名函數和普通函數的區(qū)別

匿名函數是不具名的函數,可以在不定義函數名的情況下直接使用,通常用于函數內部的局部作用域中。而普通函數則是通過定義函數名,在任何地方都可以直接調用的函數。
在 Go 中,匿名函數與普通函數有以下區(qū)別:

  • 匿名函數可以在函數內部定義,普通函數只能在包級別定義;
  • 匿名函數可以在定義后立即調用,也可以賦值給一個變量后再調用,而普通函數只能通過函數名調用;
  • 匿名函數可以訪問并修改外部變量,即閉包特性,而普通函數只能訪問參數和全局變量;
  • 匿名函數可以作為函數參數傳遞,也可以作為函數返回值,而普通函數只能作為函數參數傳遞。

例如,以下代碼使用了匿名函數:

package main
import "fmt"
func main() {
    func() {
        fmt.Println("Hello, World!")
    }()
}

在這個例子中,我們定義了一個匿名函數,并在函數定義后立即調用。該匿名函數沒有名稱,沒有參數,沒有返回值,僅僅打印 “Hello, World!”。由于該函數是在 main 函數內部定義的,因此只能在 main 函數內部調用,外部無法訪問。

匿名函數可以訪問并修改外部變量,即閉包特性

	s := []string{"我喜歡", "鄧文怡"}
	func(){
		s[1] = "編程"
		s = append(s, "和", "寫作")
	}()
	for _, v := range s {
		print(v, " ")
	}
	// 我喜歡 編程 和 寫作

在這個例子中,我們定義了一個字符串切片 s,包含兩個元素 “我喜歡” 和 “鄧文怡”。然后定義了一個匿名函數,并在函數定義后立即調用。在該匿名函數中,我們將 s 切片的第二個元素修改為 “編程”,并將 “和” 和 “寫作” 兩個元素添加到 s 切片的末尾。最后,通過使用 range 循環(huán)遍歷 s 切片的每個元素,并將其打印出來。因此,打印輸出的結果為 “我喜歡 編程 和 寫作”。值得注意的是,由于該匿名函數是在 main 函數內部定義的,因此只能在 main 函數內部調用,外部無法訪問。

由于該匿名函數是在 main 函數內部定義的,因此可以訪問和修改 s 切片。在該匿名函數定義時,它引用了變量 s,因此它形成了一個閉包,即該匿名函數“捕獲”了在其定義范圍內聲明的變量 s。所以,在匿名函數中修改 s 切片的值也影響到了 main 函數中 s 切片的值。 這就是匿名函數的閉包特性:函數可以訪問并修改其定義范圍內的變量。

補充:Golang的匿名函數

golang中的匿名函數 golang中的匿名函數1.匿名函數介紹2.匿名函數使用方式2.1定義時直接調用2.2將匿名函數賦值給一個變量2.3定義全局匿名函數

golang中的匿名函數

1.匿名函數介紹

golang支持匿名函數,如果某些函數僅想在特定位置使用一次,那么可以考慮使用匿名函數。
匿名函數也可以實現多次調用。

2.匿名函數使用方式

2.1定義時直接調用

示例代碼:

package main
import (
	"fmt"
)

func main() {
	fmt.Println("Hello World!");

	//匿名函數使用方式1:定義時直接調用。
	//(num1 int,num2 int),形參前不寫函數名,并在函數后直接調用。
	res := func (num1 int,num2 int) int {
		return num1 + num2
	}(2,3)

	fmt.Printf("res的值為:%v",res)
}

結果:

在這里插入圖片描述

2.2將匿名函數賦值給一個變量

示例代碼:

package main
import (
	"fmt"
)

func main() {
	fmt.Println("Hello World!");

	//匿名函數使用方式2:將匿名函數賦值給變量,使用變量調用。
	add := func (num1 int,num2 int) int {
		return num1 + num2
	}

	//通過函數變量 調用函數。
	res := add(2,3)

	fmt.Printf("add的類型為:%T,res的值為:%v",add,res)
}

結果:

在這里插入圖片描述

add的類型為 函數 func(int,int) int 類型。

2.3定義全局匿名函數

package main
import (
	"fmt"
)

//匿名函數使用方式3:將函數賦值給全局變量。
var Add = func (num1 int,num2 int) int{
	return num1 + num2
}

func main() {
	fmt.Println("Hello World!");

	res := Add(2,3)
	fmt.Printf("Add全局變量的類型:%T,res的類型:%T,res的值為:%v",Add,res,res)

}

結果:

在這里插入圖片描述

到此這篇關于golang的匿名函數和普通函數的區(qū)別的文章就介紹到這了,更多相關go匿名函數內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Golang中Bit數組的實現方式

    Golang中Bit數組的實現方式

    這篇文章主要介紹了Golang中Bit數組的實現方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Golang使用CGO與Plugin技術運行加載C動態(tài)庫

    Golang使用CGO與Plugin技術運行加載C動態(tài)庫

    這篇文章主要介紹了Golang使用CGO與Plugin技術運行加載C動態(tài)庫,Golang?程序在運行時加載C動態(tài)庫的技術,跳過了Golang項目編譯階段需要鏈接C動態(tài)庫的過程,提高了Golang項目開發(fā)部署的靈活性
    2022-07-07
  • Go語言開發(fā)k8s之Deployment操作解析

    Go語言開發(fā)k8s之Deployment操作解析

    這篇文章主要為大家介紹了Go語言開發(fā)k8s之Deployment操作解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Go語言的文件操作代碼匯總

    Go語言的文件操作代碼匯總

    本文給大家匯總介紹了go語言中的文件操作的代碼,包括文件的讀寫,文件的新建打開和刪除等,希望對大家學習go語言能夠有所幫助
    2018-10-10
  • 一文詳解Go語言中切片的底層原理

    一文詳解Go語言中切片的底層原理

    在Go語言中,切片作為一種引用類型數據,相對數組而言是一種動態(tài)長度的數據類型,使用的場景也是非常多,所以本文主要來和大家聊聊切片的底層原理,需要的可以參考一下
    2023-06-06
  • golang等待觸發(fā)事件的實例

    golang等待觸發(fā)事件的實例

    這篇文章主要介紹了golang等待觸發(fā)事件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang 獲取文件md5校驗的方法以及效率對比

    Golang 獲取文件md5校驗的方法以及效率對比

    這篇文章主要介紹了Golang 獲取文件md5校驗的方法以及效率對比,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • 基于Go和Gin的環(huán)境配置方法

    基于Go和Gin的環(huán)境配置方法

    今天小編就為大家分享一篇基于Go和Gin的環(huán)境配置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 如何用golang運行第一個項目

    如何用golang運行第一個項目

    這篇文章主要介紹了如何用golang運行第一個項目,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • go?sync包中的互斥鎖Mutex和等待組WaitGroup使用詳解

    go?sync包中的互斥鎖Mutex和等待組WaitGroup使用詳解

    這篇文章主要為大家介紹了go?sync包中的互斥鎖Mutex和等待組WaitGroup使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08

最新評論

连城县| 库车县| 泰和县| 分宜县| 军事| 明星| 新泰市| 剑阁县| 都昌县| 开平市| 晋宁县| 荃湾区| 铁力市| 绥阳县| 太白县| 察雅县| 剑河县| 嘉义县| 兰考县| 寿宁县| 铁岭县| 额济纳旗| 明光市| 平顶山市| 东莞市| 广灵县| 福泉市| 南宫市| 东源县| 涪陵区| 漳州市| 武胜县| 洞头县| 乐都县| 云梦县| 兴仁县| 大宁县| 集安市| 安仁县| 莒南县| 永州市|