前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang基础学习之变量篇

Golang基础学习之变量篇

原创
作者头像
小肥羊
修改2021-03-04 09:47:30
3200
修改2021-03-04 09:47:30
举报
文章被收录于专栏:golang学习专栏

变量的作用

变量是指在内存中开辟一块空间用来存储内容的内存地址。

如何定义变量

定义变量的方式有如下4种:

标准格式
代码语言:txt
复制
var 变量名 变量类型 [= 变量初始值]
var a int = 10

当变量定义时,未设置初始值,会默认的根据变量的类型设置一个初始值。

代码语言:txt
复制
var 变量名 变量类型
代码语言:txt
复制
var a int

不同的数据类型的初始值情况如下:

1.整型和浮点型:0,0.0

2.字符串变量:空

3.布尔类型:bool

4.指针、函数:nil

5.数组:0

数组的默认值是根据定义的数据类型和数组长度来确定的。示例代码如下:

6.切片:[]

代码语言:txt
复制
// 变量默认值,示例代码
func main() {
    // 整型默认值
    var a int// 默认值为0
    // 数组的默认值
    var arr[3] int32 // 打印的结果为:[0,0,0]
    // 切片的默认值
    var sli[] int // 打印的结果为:[]
}
简短语法
代码语言:txt
复制
var 变量名 := 初始值 或 变量名1, 变量名2,变量名3, .... 变量名n = 变量名1值,变量名2值,变量名3值,....变量名n值
var a := 10

使用简短语法需要注意如下几点

  1. := 左侧的变量必须是从未定义过,也就是说变量名必须是全新的一个变量名。
  2. 简短语法只能定义局部变量,而不能定义全局变量。
批量定义
  1. 相同类型的变量(并行声明)
代码语言:txt
复制
var 变量名1,变量名2,变量名2.... 变量类型 = 值1,值2,值3,....,变量n
var a,b,c int = 10,202,30
  1. 不同类型的变量(因式分解法)
代码语言:txt
复制
var (
    变量名 变量类型 [= 值],
    变量名 变量类型 [= 值],
    变量名 变量类型 [= 值],
    变量名 变量类型 [= 值]
)
var (
    a int = 10
    b float32 = 1.0
    c bool
)

因式分解法定义,要手动给每个变量设置一个初始值

代码语言:txt
复制
// 该方式是错误的,提示syntax error: unexpected newline, expecting type
var (
    a = 10
    b
)
变量的多重赋值
代码语言:txt
复制
var 变量1,变量2,....变量n int
变量1,变量2,....变量n = 1,2,....,n

多重赋值时需要注意的时,变量的类型一定需要一致

匿名变量

在编码过程中,可能会遇到没有名称的变量、类型或方法。虽然这不是必须的,但有时候这样做可以极大地增强代码的灵活性,这些变量被统称为匿名变量。

匿名变量使用"_"代替。

代码语言:txt
复制
e, _ := 200, 100
f, _, _ := 100, 200, 300

使用匿名变量需要注意如下几点

1.任何类型都可以赋值给匿名变量。

2.赋值给匿名变量的值总将被抛弃。

3.匿名变量的值不能在后续的代码中使用。

4.匿名变量也不能做运算操作。

5.匿名变量不会暂用内容,也不会分配内容,多个匿名变量是不会发生冲突的。

变量的作用域
代码语言:txt
复制
var a int // 全局变量
func main() {
    var b int // 局部变量
    fu(c) // 形参
}
func fu(d){ // 实参
    return d
}

变量的作用域分为如下几种情况:

1.全局变量。

2.局部变量。

3.参数(形参、实参)。

4.当全局变量和局部变量的名称一致时,则优先使用局部变量。

5.局部变量一旦声明就必须使用,全局变量可以声明不使用。

6.局部变量在函数被调用完之后,就会自动销毁。

7.如果在当前的包引入外部包的全局变量,这个全局变量的后首之母必须是大写。

变量类型转换

go语言中是不存在类型之间进行隐式转换(PHP支持),所有的类型转换必须是显示转换。但是显示转换也是基于数据类型相互兼容的情况下。

这里的数据兼容指的是同一种类型,比如float和int是数字类型,可以转换。int和bool(bool的值只有true和false)不是同一种数据类型,是不能进行转换的。

代码语言:txt
复制
func main() {
    var a float32 = 1.0// a的默认值是0
    b := int(a)// 打印b的值就是1
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 变量的作用
  • 如何定义变量
    • 标准格式
      • 简短语法
        • 批量定义
          • 变量的多重赋值
            • 匿名变量
              • 变量的作用域
              • 变量类型转换
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档