2、变量

发布时间 2023-03-26 17:18:23作者: 我也有梦想呀

1、含义

变量本质上就是一小块内存,用于存储数据,在程序的运行中数值是可以改变的

2、声明变量

1、方式一:先定义再赋值
// 方式一:先定义再赋值
var a int
a = 10
fmt.Printf("a的类型为:%T, 值为:%d\n", a, a)
2、方式二:定义赋值写一行
var b int = 20
fmt.Printf("b的类型为:%T, 值为:%d\n", b, b)
3、方式三:自动类型推断,go语言是一个强类型语言
var c = "张三"
fmt.Printf("c的类型为:%T, 值为:%s\n", c, c)
4、方式四:简短声明
d := 1.2
fmt.Printf("d的类型为:%T,值为:%f\n", d, d)

image

5、变量多声明
var x, y, z int
	x = 1
	y = 2
	z = 3
	fmt.Println(x, y, z)

	var x1, y1, z1 = 10, 20, 30
	fmt.Println(x1, y1, z1)

	var x2, y2, z2 = 100, 3.14, "YYDS"
	fmt.Println(x2, y2, z2)

	// 定义一组值
	var (
		name = "zs"
		age  = 18
		sex  = "女"
	)
	name = "李四"
	fmt.Println(name, age, sex)

	var (
		name1 = "zs"
		age1  = 18
		sex1  = "女"
	)
	fmt.Println(name1, age1, sex1)
6、变量重复赋值
var num int
	num = 10
	fmt.Printf("num的类型为:%T , 值为: %d , 地址为:%p \n", num, num, &num)

	num = 200
	fmt.Printf("num的类型为:%T , 值为: %d , 地址为:%p \n", num, num, &num)

image

变量使用完了,也不需要我们程序员去回收内存。Go语言和Java一样有GC垃圾回收机制

7、变量注意事项
  • 变量必须先定义才能使用
  • go语言是静态语言,要求变量的类型和赋值的类型必须一致。
  • 变量名不能冲突。(同一个作用于域内不能冲突)简短定义方式,左边的变量名至少有一个是新的
  • 简短定义方式,不能定义全局变量。
  • 变量的零值。也叫默认值。
    • 整型: 默认值是0
    • 浮点类型:默认是0
    • 字符串:默认值""
  • 变量定义了就要使用,否则无法通过编译。

如果在相同的代码块中,我们不可以再次对于相同名称的变量使用初始化声明,例如: a:= 20 就是不被允许的,编译器会提示错误no new variables on left sideof:=,但是a=20 是可以的,因为这是给相同的变量赋予一个新的值。
如果你在定义变量a之前使用它,则会得到编译错误 undefined:a。如果你声明了一个局部变量却没有在相同的代码块中使用它同样会得到编译错误,例如下面这个例子当中的变量 a:

// fmt.Println(num2)
	// num = "str"

	num, sex = 300, "zs"
	fmt.Println(name, sex)