Go语言变量
  Op9yysgqYUmV 2023年11月02日 57 0


Go语言变量的声明(使用var关键字)

标准格式

Go语言的变量声明的标准格式为:

var name type

变量声明以关键字 var 开头,后置变量类型,行尾无须分号。

批量格式

例如:

var (
    a int
    b string
    c []float32
    d func() bool
    e struct {
        x int
    }
)

使用关键字var 和括号,可以将一组变量定义放在一起。

简短格式

除 var 关键字外,还可使用更加简短的变量定义和初始化语法。

名字 := 表达式

需要注意的是,简短模式(short variable declaration)有以下限制:

  • 定义变量,同时显式初始化。
  • 不能提供数据类型。
  • 只能用在函数内部。

和 var 形式声明语句一样,简短变量声明语句也可以用来声明和初始化一组变量:

i, j := 0, 1

变量命名建议

  • 以母或下画线开始,由多个字母、数字和下画线组合而成
  • 区分大小写
  • 使川驼峰( camel case )拼写格式
  • 局部变员优先使川短名。
  • 不要使用保留关键字
  • 不建议使用与预定义常量、类型、内置函数相同的名字
  • 专有名词通常会全部大写,例如 escape HTML

Go语言变量的初始化

go语言在声明变量时,自动对变量对应的内存区域进行初始化操作。每个变量会初始化其类型的默认值,例如:

  • 整型和浮点型变量的默认值为 0 和 0.0。
  • 字符串变量的默认值为空字符串。
  • 布尔型变量默认为 bool。
  • 切片、函数、指针变量的默认为 nil。

当然,依然可以在变量声明时赋予变量一个初始值。

变量初始化的标准格式

var 变量名 类型 = 表达式

编译器推导类型的格式

在标准格式的基础上,将类型省略后,编译器会尝试根据等号右边的表达式推导变量的类型,例如:

var num= 100

等号右边的部分在编译原理里被称做右值(rvalue)。

短变量声明并初始化

var 的变量声明还有一种更为精简的写法,例如:

num:=100

这是Go语言的推导声明写法,编译器会自动根据右值类型推断出左值的对应类型。

注意:由于使用了:=,而不是赋值的=,因此推导声明写法的左值变量必须是没有定义过的变量。若定义过,将会发生编译错误。

在多个短变量声明和赋值中,至少有一个新声明的变量出现在左值中,即便其他变量名可能是重复声明的,编译器也不会报错

Go语言变量的作用域

一个变量(常量、类型或函数)在程序中都有一定的作用范围,称之为作用域。

因为Go语言会在编译时检查每个变量是否使用过,一旦出现未使用的变量,就会报编译错误。对于这一点,我觉得是有利有弊吧,好处当然是对于程序性能和内存回收来说,坏处就是整天被这种编译错误所扰,实在是烦扰,如果不能理解变量的作用域,就有可能会带来一些不明所以的编译错误。

根据变量定义位置的不同,可以分为以下三个类型:

  • 函数内定义的变量称为局部变量
  • 函数外定义的变量称为全局变量
  • 函数定义中的变量称为形式参数

下面就来分别介绍一下。

局部变量

在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,函数的参数和返回值变量都属于局部变量。

局部变量不是一直存在的,它只在定义它的函数被调用后存在,函数调用结束后这个局部变量就会被销毁。

全局变量

在函数体外声明的变量称之为全局变量,全局变量只需要在一个源文件中定义,就可以在所有源文件中使用,当然,不包含这个全局变量的源文件需要使用“import”关键字引入全局变量所在的源文件之后才能使用这个全局变量。

全局变量声明必须以 var 关键字开头,如果想要在外部包中使用全局变量的首字母必须大写。

Go语言程序中全局变量与局部变量名称可以相同,但是函数体内的局部变量会被优先考虑。

形式参数

在定义函数时函数名后面括号中的变量叫做形式参数(简称形参)。形式参数只在函数调用时才会生效,函数调用结束后就会被销毁,在函数未被调用时,函数的形参并不占用实际的存储单元,也没有实际值。

形式参数会作为函数的局部变量来使用。

 

参考:

http://c.biancheng.net/golang/intro/

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: Go语言数组 下一篇: CentOS Docker 安装
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

Op9yysgqYUmV