Go变量(一)

作者: 草莓君_ | 来源:发表于2019-07-30 15:08 被阅读0次

一、变量
在数学概念中,变量(variable)表示没有固定值且可改变的数。但从计算机系统实现角度来看。变量是一段或多段用来存储数据的内存。
1.定义变量

    //运行时内存分配操作会确保变量自动初始化为二进制零值(zero value)
    var x int      //自动化初始化为0
    var y = false  //自动推断为bool类型

2.可一次定义多个变量

    //可一次定义多个变量
    var x, y int           //相同类型的多个变量
    var a, s = 100, "love"  //不同类型的初始化值

3.以组方式整理多行变量定义

    var (
        x, y int
        a, s = 100, "love"
    )

4.简短模式

    x := 100
    a, s := 1, "love"

注意,简短模式是有限制的,如下:

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

我们执行下面代码看看

var x = 100          //全局变量
func main() {
    println(&x, x) 
    x := "love"      //重新定义变量
    println(&x, x)
}

输出:

0x10bd148 100      //对比内存地址,看的出是两个不同的变量
0xc000040778 love

可以看出,原本打算修改全局变量,结果变成重新定义同名局部变量。充分体现了简短模式的限制性。

  • 简短模式并不总是重新定义变量,也可能是部分退化的赋值操作。
func main() {
    x := 100
    println(&x)
    x, y := 200, "love"   //这里注意啦: x 退化为赋值操作,仅有 y 是变量定义
    println(&x, x)
    println(y)
}

输出:

0xc000040780
0xc000040780 200   //通过内存地址,我们可以确认x是同一个变量
love

那么退化赋值的条件是什么呢?-> 至少有一个新变量被定义,且必须是同一作用域。
比如以下案例都不符合退化赋值:

func main() {
    x := 100
    println(&x)
    x := 200        //编译时发现报错了 no new variables on left side of :=
    println(&x, x)
}
func main() {
    x := 100
    println(&x, x)
    {
        x, y := 200, "love"      //不同作用域,全部是新变量定义
        println(&x, x, y)
    }
}

输出:

0xc000040780 100
0xc000040778 200 love

5.未使用错误
编译器将未使用的局部变量当作错误。主要是有助于培养我们良好的编码习惯。

var y = 100    //我们可以看到,全局变量是没有问题的
func main() {
    x := 100   //编译时报错了 x declared and not used
}

相关文章

  • go 安装配置(一)

    基本 安装gobrew install go 查看go环境变量go ev 设置go环境变量vim .bash_pr...

  • Go之旅-变量

    Go语言变量有固定的数据类型,决定了变量内存的长度和存储格式。Go变量只能修改变量值,不能改变变量的数据类型。Go...

  • Go变量(一)

    一、变量在数学概念中,变量(variable)表示没有固定值且可改变的数。但从计算机系统实现角度来看。变量是一段或...

  • VSCODE配置go语言开发环境(Windows)

    一、配置GO语言环境** 设置环境变量 环境变量path中添加go安装bin目录 cmd输入go version看...

  • golang的helloworld

    go语言初识 go语言的变量

  • GO语言基础(六)

    定义变量 Go语言里面定义变量有很多种方式。使用var关键字是Go最基本的定义变量方式,与C语言不同的是Go把变量...

  • 当我们说 Go 的环境变量的时候意味着什么

    一. 理解 Go 的环境变量 当我们安装好 go 之后我们输入go env,就可以查看go的环境变量,大部分都是默...

  • Go语言开发资料收集

    【Go 边看边练 -《Go 学习笔记》】系列Go 边看边练 -《Go 学习笔记》系列(一)- 变量、常量Go 边看...

  • Go语言的常量与变量使用注意事项

    一、变量 Go是静态类型,不能在运行期改变变量的类型。 面试题 这是一个关于Go语言全局变量声明和赋值的考察,Go...

  • 01. Go配置

    一、环境变量配置 $GOROOT: go环境变量 $GOPATH: 工作目录 1). Linux环境 解压go的压...

网友评论

    本文标题:Go变量(一)

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