学习《GO语言学习笔记》的学习笔记之2.1 变量(详解)

版权声明:诸葛老刘所有 https://blog.csdn.net/weixin_39791387/article/details/86522276

本文适合初学者阅读

  • 关键字var用于定义变量
var x int              // 自动初始化为 0
var z = false          // 自动推断为bool类型
  • 可以一次定义多个变量
var x, y int 		// 相同类型的多个变量
var a, b = 100, "xyz"  // 不同类型初始化值
  • 依照惯例, 建议以组的方式整理多行变量定义
var(
	x, y int
	a, b = 100, "XYZ"
)
  • 简短模式

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

func main() {
	x := 100
	a, b := 200, "XYZ"
}

简短模式的限制:

  1. 定义变量,同时显示初始化
  2. 不能提供数据类型
  3. 只能用在函数内部
  • 简短模式的坑:
    • 简短模式并不总是重新定义变量, 也可能是部分退化的赋值操作.

func main() {
	x := 10
	println(&x)     // 注意: x退化为赋值操作, 仅y是变量定义
	
	x, y := 200, "abc"
	println(&x,x)     // 打印出变量的内存地址,以便确认是否是同一个变量
	println(y)
}

结果是:

0xc000031f60
0xc000031f60 200
abc

结果确认是同一变量

退化赋值的前提条件是: 最少有一个新变量被定义 , 且必须是同一作用域

func main() {
	x := 10
	println(&x)     // 注意: x退化为赋值操作, 仅y是变量定义
	
	{
	x, y := 200, "abc"
	println(&x,x)     // 打印出变量的内存地址,以便确认是否是同一个变量
	println(y)
	}
}

结果是:

0xc000031f60
0xc000031f58 200    //结果确认不再是同一个变量
abc

在处理函数的错误返回值时, 退化赋值允许我们重复使用err变量, 这是相当有益的.

  • 多变量赋值
    在进行多变量赋值操作时, 首先计算出所有右值, 然后再依次完成赋值操作.
package main

func main() {
    x, y := 1, 2
    x, y = y+5, x+1

    println(x, y)
}

结果是

7 2
  • 未使用错误

编译器将未使用到的局部变量当作错误. 也就是用多少定义多少, 定义了没有使用, 会报错, 这和python不同

  • 变量命名建议:
    – 以字母或下划线开始, 由多个字母 数字或下划线组成
    – 区分大小写.
    – 使用驼峰拼写格式
    – 局部变量优先使用短名.
    – 不要使用保留关键字
    – 不建议使用与预定义的常量, 类型, 内置函数相同的名字
    – 专有名词通常全部大写.
    – 不建议中文字符命名
    – 符号名字首字母大小写决定了其作用域, 首字母大写为导出成员, 可以被包外引用, 而小写仅能在包内使用
    – 空标识符(也就是_)通常作为忽略占位符使用, 可作为表达式左值, 无法记取内容

猜你喜欢

转载自blog.csdn.net/weixin_39791387/article/details/86522276