`
freshunter
  • 浏览: 16552 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

关于go语言的闭包

    博客分类:
  • go
go 
阅读更多
package main

import (
	"fmt"
)

func main() {
	var fs = [4]func(){}

	for i := 0; i < 4; i++ {
		defer fmt.Println("defer i = ", i)
		defer func() { fmt.Println("defer_closure i = ", i) }()
		fs[i] = func() { fmt.Println("closure i = ", i) }
	}

	for _, f := range fs {
		f()
	}
}

 这两天有时间学习了一下go语言。挺有趣的。

上面这段代码是关于closure和defer的用法。

go语言支持闭包,如果你在闭包函数中使用了上层函数的变量,那么这个变量的一个内存地址会记录到这个闭包中,当你调用这个闭包函数的时候,这个变量的值会直接去记录的内存地址里取,所以就得到了这个打印:

closure i =  4
closure i =  4
closure i =  4
closure i =  4
defer_closure i =  4
defer i =  3
defer_closure i =  4
defer i =  2
defer_closure i =  4
defer i =  1
defer_closure i =  4
defer i =  0

 

分享到:
评论

相关推荐

    Go语言学习笔记.pdf 共174页

    Go语言学习笔记.pdf 共174页是一本关于Go语言的详细学习笔记,涵盖了Go语言的基础知识、函数、数组、Maps、Structs、接口、并发、程序结构、标准库等方面的内容。本笔记共分为三大部分:Go语言基础、标准库和扩展库...

    Go语言编程goland.pdf

    Go语言有很多特性,例如自动垃圾回收、更丰富的内置类型、函数多返回值、错误处理、匿名函数和闭包、类型和接口、并发编程、反射、语言交互性等。 自动垃圾回收 Go语言提供了自动垃圾回收机制,开发者不需要手动...

    Go语言精进之路:从新手到高手的编程思想、方法和技巧1.docx

    学习 Go 语言的开发者也需要了解一些高级特性,例如闭包、通道和并发编程等。 在学习过程中,可以通过编写简单的程序来巩固基础知识,例如实现一些数学计算、字符串处理和文件操作等。在掌握基本的语法和编程习惯...

    Go语言学习笔记

    Go语言学习笔记是关于Go语言基础入门篇的笔记,主要介绍Go语言基础语法、数据类型、逻辑语句等相关知识点。 语言概述 Go语言是一种开源的编程语言,能让构造简单、可靠且高效的软件变得容易。Go语言是从2007年末由...

    go语言基本语言源码

    Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收式的、具有C风格的编程语言。它的设计目标是提高编程效率,简化多线程编程,以及优化网络和系统服务的开发。下面将详细讨论Go...

    计算NFA中ε闭包

    ### 计算NFA中的ε闭包 #### 一、NFA与ε闭包概念介绍 ...这在编译器设计和形式语言理论的研究中是非常重要的基础工具。理解并掌握了NFA和ε闭包的概念及其计算方法后,可以进一步应用于更复杂的自动机转换问题中。

    GO语言文档(中文版)

    Go语言,也被称为Golang,是由Google开发的一种静态类型的、编译式的、并发型且具有垃圾回收功能的编程语言。自2007年诞生以来,Go语言以其简洁的语法、高效的性能以及对并发编程的良好支持,赢得了全球开发者社区的...

    举例讲解Go语言中函数的闭包使用

    ### Go语言中函数的闭包使用详解 #### 一、闭包的概念与作用 闭包是函数式编程中一个非常重要的概念,在Go语言中也得到了广泛的应用。简单来说,闭包是由函数及其相关的引用环境组成的实体。这里的“引用环境”指...

    Go语言最佳入门手册

    ### Go语言最佳入门手册 #### 一、Go语言概述 **1.1 起源与发展** Go语言是由Google公司于2007年开始研发的一种开源编程语言,并于2009年正式发布。它的主要设计者包括Robert Griesemer、Rob Pike以及Ken ...

    我对Go语言一点理解

    Go语言,又称Golang,是由Google在2007年开始研发并在2009年正式对外发布的第二款开源编程语言。这款语言是在Google著名的“20%时间”政策下产生的创新成果之一。Google AppEngine平台早在Go语言发布初期就已支持其...

    Go语言开发手册

    9. **函数文本和闭包**:闭包是在Go语言中实现函数式编程的一个重要概念。 #### 七、针对C++程序员指南 1. **概念差异**:Go语言与C++在很多概念上有显著的不同,如内存管理、异常处理等。 2. **语法**:Go语言的...

    go语言学习示例

    Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的、C风格的编程语言。它旨在提高程序员的生产效率和系统的可扩展性,特别适合构建大规模的网络服务和分布式系统。本资料包是...

    手撕Go语言v1.1.pdf

    Go语言(又称Golang)是一种静态类型的编程语言,由Google工程师Robert Griesemer、Rob Pike及Ken Thompson在2007年开始设计并开发,于2009年正式发布。它被设计成一种简洁、高效且易于学习的语言,旨在解决现代软件...

    Go语言中文文档高清版

    Go语言中文文档高清版 Go语言中文文档高清版是Go语言的官方文档,涵盖了Go语言的基本概念、语法、标准库、框架、数据库、网络编程、并发编程、微服务等方面的知识点。 一、基本概念 * Go语言的主要特征:静态类型...

    Go 语言学习代码示例v2

    Go语言,又称Golang,是由Google推出的一种静态类型、编译型语言,具有简洁、快速、安全等特点,特别适合用于开发网络服务和并发程序。Go语言的设计兼顾了开发效率和系统性能,它是面向并发的编程语言,提供了轻量级...

    Go语言代码样例

    首先,关于Go语言与MySQL的查询,Go提供了标准库`database/sql`,它提供了一个通用的SQL数据库接口。要使用MySQL,我们需要引入`github.com/go-sql-driver/mysql`驱动。通过创建数据库连接,然后使用`sql.Open()`...

    Go 语言学习代码示例

    Go 语言,又被称为 Golang,是由 Google 开发的一种静态类型的、编译型的、并发型的、垃圾回收的编程语言。它旨在提高开发效率,同时保持程序的高性能和可靠性。Go 语言的设计受到了 C、C++ 和 Pascal 等语言的影响...

    学习Go语言

    Go语言,也称为Golang,是由Google开发的一种开源编程语言。它旨在提供简洁、高效且易于学习的特性,适用于现代软件开发的需求。《学习Go语言》这本书由Miek Gieben编写,邢星翻译,是一份针对初学者的指南,内容...

    深入理解Go语言中的闭包

    Go语言中的闭包 先看一个demo: func f(i int) func() int { return func() int { i++ return i } } 函数f返回了一个函数,返回的这个函数就是一个闭包。这个函数中本身是没有定义变量i的,而是引用了它所在的...

    学习go语言(Golang)

    Go语言,又称Golang,是由Google开发的一种静态类型的、编译型的、并发型的、垃圾回收的编程语言。它的设计目标是简化并发编程,并提供高效、简洁的语法,使得开发者能够快速编写出可靠的系统。《学习Go语言》这本书...

Global site tag (gtag.js) - Google Analytics