美文网首页
Go语言里面的变量作用域问题

Go语言里面的变量作用域问题

作者: 滚瓜侠 | 来源:发表于2022-11-24 13:13 被阅读0次

变量的作用域,通常有包package范围、函数func范围、或者闭包closure范围, go语言毕竟比C语言复杂一点点,有些变量作用域很容易理解,有些就比较特殊。

例如下面的例子,输出结果到底是什么呢?有点令人疑惑,和go语言的设计理念有一点点冲突。

package main

import "fmt"

func wrapper() func() int {

x := 0

return func() int {

x++

return x

}

}

func main() {

increment := wrapper()

fmt.Println(increment())

fmt.Println(increment())

}

这个例子的输出结果是:

1

2

该如何理解呢?为什么不是两个1?

这个其实就是闭包的特殊性,普通函数会每次初始化变量,而闭包会全局执行一次初始化之后维持变量。

相关文章

  • Go语言里面的变量作用域问题

    变量的作用域,通常有包package范围、函数func范围、或者闭包closure范围, go语言毕竟比C语言复杂...

  • Go 语言变量作用域

    作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。Go 语言中变量可以在三个地方声明: ...

  • Go 语言变量作用域

    作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。 Go 语言中变量可以在三个地方声明:...

  • Go语言探索 - 8(原创)

    Go语言基础系列博客用到的所有示例代码 在上一篇文章主要学习了Go 语言变量以及变量的作用域。本篇文章主要学习的是...

  • 四、Go语言变量作用域

    四、Go语言变量作用域 全局变量 在函数体外声明的变量称之为全局变量,全局变量可以在整个包甚至外部包(被导出后)使...

  • Go语言的变量作用域

    参考:http://c.biancheng.net/view/4032.html 关键词 要明白,局部变量,形式参...

  • 《Go语言四十二章经》第五章 作用域

    《Go语言四十二章经》第五章 作用域 作者:李骁 5.1 作用域 局部变量在函数体内或代码块内声明的变量称之为局部...

  • C语言之内存讲解

    1 内存讲解 1.1 作用域 C语言变量的作用域分为:代码块、函数、文件作用域: 1.1.1 局部变量 局部变量(...

  • 升华:编程语言再学习基础概要

    编程语言基础概要 作用域词法作用域(也称为静态作用域),即变量的作用域在定义时确定。作用域范围由变量所处代码块(大...

  • 闭包

    作用域 理解闭包之前我们要弄清楚js的变量作用域,变量作用域就2种, 全局变量 局部变量 Javascript语言...

网友评论

      本文标题:Go语言里面的变量作用域问题

      本文链接:https://www.haomeiwen.com/subject/gxezxdtx.html