美文网首页
golang作用域

golang作用域

作者: YongHao | 来源:发表于2016-10-31 16:37 被阅读94次

golang的:=操作符虽然方便,但在作用域上也带来了潜在的疑惑和危险.


大家看看这段代码能否准确的说出输出语句是什么?

package main

import "fmt"

var a int

func funca() {
    a, b := 12, 3
    fmt.Println("a is ", a, " b is ", b)
}
func funcb() {
    fmt.Println("a is ", a)
}
func main() {
    funca()
    funcb()

    c := 8
    fmt.Println("c is ", c)
    c, d := 9, 10
    fmt.Println("c is ", c, " d is ", d)
}

是的,输出的是

a is  12  b is  3
a is  0
c is  8
c is  9  d is  10

已经定义好的变量在同一作用域里, 在多赋值(:=)时, :=的作用只是赋值, 就像main函数里对C的作用一样.

但是在该作用域里并没有定义时, := 会是创建新变量. 如funca就会创建局部变量a,覆盖掉全局的a变量.

相关文章

  • golang作用域

    golang的:=操作符虽然方便,但在作用域上也带来了潜在的疑惑和危险. 大家看看这段代码能否准确的说出输出语句是...

  • Golang须知

    变量的包作用域在Golang中,同个package中的非局部变量,可以认为是package作用域,可在packag...

  • golang作用域总结

    作用域分为全局作用域、包级作用域和局部作用域 系统内置的类型、函数和常量属于全局作用域 命名函数只能在包级作用域中...

  • golang := 变量作用域 (坑)

    此时 := 不能修改全局变量的值,在该作用域里并没有定义时, := 会是创建新变量.for循环的里的err 不影响...

  • js作用域

    1 - 作用域 1.1 作用域概述 全局作用域 局部作用域(函数作用域) 1.2 全局作用域 1.3 局部作用域 ...

  • 作用域,作用域链

    1 - 作用域 1.1 作用域概述 全局作用域 局部作用域(函数作用域) 1.2 全局作用域 1.3 局部作用域 ...

  • 变量作用域

    变量作用域:静态作用域、动态作用域JS变量作用域:JS使用静态作用域JS没有块级作用域(全局作用域、函数作用域等)...

  • 一网打尽 JavaScript 的作用域

    JavaScript 的作用域包括:模块作用域,函数作用域,块作用域,词法作用域和全局作用域。 全局作用域 在任何...

  • 作用域

    词法作用域,动态作用域,全局作用域,局部作用域,函数作用域,块级作用域,有些地方还能看到隐式作用域和显示作用域。 ...

  • JS的作用域

    JS的作用域: 全局作用域、函数作用域、eval 作用域、块级作用域 全局作用域: 函数作用域: 结果截屏: 说...

网友评论

      本文标题:golang作用域

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