go語言基礎 -- 閉包

什么是閉包

閉包的概念,在很多語言中都有,比如python,這里要介紹的go,閉包就是函數與其相關的環境組合的一個整體。
我們通過一個例子來理解閉包:

func Addfunc() func (x int) int {var n int = 0// 返回的是一個函數return func(x int) int {n = n + xreturn n}
}func main() {f := Addfunc()f(1)f(2)f(3)
}

這里內部定義的func和n組成一個閉包,Addfunc是一個函數,返回一個匿名函數,這個匿名函數和其函數外部的變量n就構成了閉包。我們用類的思想很容易理解閉包,可以把閉包看成一個類,它里面包含變量是成員變量,它的函數是其成員函數。我們分析閉包,關鍵也是在于看其函數和引用到的變量。
當我們反復調用Addfunc時,n只會被初始化一次,上述Addfunc就會形成一個累加

閉包案例–文件名后綴

案例實現傳入文件名,如果不存在指定后綴,則添加指定后綴

import ("strings"
)
// 這里外部變量suffix和內部func(string) string形成了閉包
func AddSuffix(suffix string) func(file_name string) string {return func(file_name string) string {if !strings.HasSuffix(file_name, suffix) {return file_name + suffix}}
}func main() {f := AddSuffix(".jpg")f("image1")f("image2")
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260065.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260065.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260065.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux中解決SSH連接慢問題

2019獨角獸企業重金招聘Python工程師標準>>> 現在連接linux服務器一般都是使用SSH遠程連接的方式。最近新裝了一臺服務器,發現telnet時速度很快,ping時一切也正常,但SSH連接的時候卻很慢。經過網上資料查詢,大致是有以…

利用Theme自定義Activity進入退出動畫

有沒有覺得Activity的默認動畫太快了或者太難看了。。我原來使用Activity.overridePendingTransition來自定義Activity的進入動畫,卻發現沒法定義退出的動畫。結果就發現了強大的Theme和Style,之后還需要好好研究一下。具體是這樣子的:在Andr…

阿里云深圳數據中心正式開放

阿里云深圳數據中心正式開放 ? 8月29日,阿里云深圳數據中心正式開放運營,這是繼杭州、青島、北京、香港之后,我們在全球開放的第五個數據中心。 深圳數據中心主要輻射以深圳、廣州為中心的華南區域,以滿足這一區域內的商貿企業、…

vue 文件及描述信息一起上傳_用Vue實現一個大文件上傳和斷點續傳

前言這段時間面試官都挺忙的,頻頻出現在博客文章標題,雖然我不是特別想蹭熱度,但是實在想不到好的標題了-。-,蹭蹭就蹭蹭 :)事實上我在面試的時候確實被問到了這個問題,而且是一道在線 coding 的編程題,當時…

c語言函數聲明定義參數命名,C語言函數聲明與定義

C語言函數聲明與定義教程在C語言函數聲明與定義語法type funcName(paramType1 param1, paramType2 param2){// 執行語句...return val}參數參數描述type函數的返回值類型,如果沒有任何返回值,則寫 void,不可以死省略不寫。funcName函數名。pa…

gcc g++ Linux下動態庫_靜態庫

關于Unix靜態庫和動態庫的分析 基本概念 庫有動態與靜態兩種,動態通常用.so為后綴,靜態用.a為后綴。 例如:libhello.so libhello.a 為了在同一系統中使用不同版本的庫,可以在庫文件名后加上版本號為后綴,例如: libhell…

SNF開發平臺WinForm之五-高級查詢使用說明-SNF快速開發平臺3.3-Spring.Net.Framework

5.1運行效果: 5.2開發實現: 1、按上面效果來說,先來看一下在程序當中如果調用。第一步在頁面拖拽一個按鈕為“高級查詢”,事件上寫下如下代碼: 如果是單表查詢的話,只需要傳GridView就行,如果是…

【轉】PowerDesigner表結構和字段大小寫轉換

【轉自】http://blog.csdn.net/xysh1991/article/details/8016192 使用方法:進入PowerDesigner,打開一個PDM,在菜單欄找到:Tools – Excute Commands – Edit/Run Script,或者直接按CtrlShiftX調出腳本執行窗口&#x…

新唐c語言怎么計算指數運算,C語言位域精解

有些信息在存儲時,并不需要占用一個完整的字節, 而只需占幾個或一個二進制位。例如在存放一個開關量時,只有0和1 兩種狀態,用一位二進位即可。為了節省存儲空間,并使處理簡便,C語言又提供了一種…

華為榮耀5cvs華為v9play_華為榮耀v9play和榮耀9哪個好_華為榮耀v9play和榮耀9對比評測_飛翔教程...

華為榮耀v9play是華為最新發布的手機,這款手機可以說是華為榮耀v9的青春版,把這款手機跟華為榮耀9對比起來哪款更好呢?下面就為大家帶來詳細的華為榮耀v9play和榮耀9對比評測!榮耀9介紹:6.12日下午,榮耀在上…

頸椎病防治指南

2019獨角獸企業重金招聘Python工程師標準>>> 長期從事財會、寫作、打字、辦公室等職業的工作人員,由于長期低頭伏案工作,使頸椎長時間處于屈曲位或某些特定體位,不僅使頸椎間盤內的壓力增高,而且也使頸部肌肉長期處于非…

如何熟悉一個開源項目

轉自:http://www.blogjava.net/killme2008/archive/2012/05/22/378885.html 你有個任務,需要用到某個開源項目;或者老大交代你一個事情,讓你去了解某個東西。怎么下手呢?如何開始呢?我的習慣是這樣: 1.首先…

離散序列卷積c語言,數電實驗一離散卷積的C語言編程.ppt-資源下載在線文庫www.lddoc.cn...

數電實驗一 離散卷積的C語言編程.ppt實驗一 離散卷積的C語言編程實驗,DSP實驗室,實驗性質,綜合設計性實驗,實驗目的,1 了解和認識常用的各種信號; 2 掌握卷積的定義和計算方法; 3 掌握在計算機中生成以及繪制信號序列圖的方法。,實驗原理,離散時間系統中…

三個數差的平方公式推導過程_平方差公式證明推導過程及運用詳解(數學簡便計算方法之一)...

?平方差公式是小學奧數計算中的常用公式。通常寫為:a-b(ab)x(a-b)它的幾何方法推導過程是這樣的:如下圖所示,四邊形ABCD和四邊形DEFG為正方形,邊長分別為a和b,求陰影部分面積。純手繪顯然,陰影部分面積有2…

zabbix簡單介紹(1)

zabbix概念是一個基于WEB界面的提供分布式系統監控以及網絡監視功能的企業級的開源解決方案。zabbix監控途徑zabbix agentsnmp agentipmi agent(硬件)agentless monitoring(無agent的監控)web monitoring 監控web頁面,下載(速度),響應,認證等(web本身的服務狀態)database monit…

c語言集合除去相同元素,使用C語言去掉字符串集合重復元素

有一種最直接的方法可以去掉一個集合中重復的元素,這種方法據說就是“交給下面去做”,然而有時候,你自己動手去做一下也是不錯的。如果交給下面去做,最直接的選擇就是使用map,在java中,我們有HashMap&#…

Zynq7000系列之芯片引腳功能綜述

很多人做了很久的FPGA,知道怎么去給信號分配引腳,卻對這些引腳的功能及其資源限制知之甚少;在第一章里對Zynq7000系列的系統框架進行了分析和論述,對Zynq7000系列的基本資源和概念有了大致的認識,然而要很好地進行硬件…

python模擬購物車購物過程_python實現購物車+ATM機 第五天

模擬實現一個ATM 購物商城程序1.額度 15000或自定義2.實現購物商城,買東西加入 購物車,調用信用卡接口結賬3.可以提現,手續費5%4.每月22號出賬單,每月10號為還款日,過期未還,按欠款總額 萬分之5 每日計息5…

C#使用Cookie方法

代碼Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> //寫入protected void Button1_Click(object sender, EventArgs e){HttpCookie cookienew HttpCookie("MyCook");//初使化并設置Cookie的名稱DateTime…

智能手機計步算法c語言實現,【轉載】智能手機計步器算法的實現

現在的智能手機嵌入了一些微小的傳感器,比如重力傳感器、光傳感器、聲音傳感器等。如何有效地利用這些傳感器來開發一些應用,是一個值得深入研究的課題。比如開發醫療健康的應用、運動量監視器等。本文采用htc Touch Pro智能手機的重力傳感器來開發一款監…