go语言变量和运算符
主要介绍go语言变量,运算符等
变量
变量被定义为程序运行时储存和操纵数据的实体。变量可以通过变量名访问。 变量名格式:字母数字下划线,不能以数字开头。
变量声明:
var variable_name variable_type
也可以一次声明多个变量
var variable_name, variable_name1 variable_type
变量声明
- 指定变量类型,如果没有初始化,则变量默认为零值。
1 | fmt.Println() |
- 第二种, 根据值自行判定变量类型
不需要显示声明变量类型,自动推断
var v_name = value
比如: var num = 1
- 变量的简短声明
x := 1 这个代码中, x 自动被声明为 int 类型,并存储了值 1 。 这种方式只能被用在函数体内。
如果变量已经使用 var 声明过了,再使用 := 声明变量,就产生编译错误
- 多变量声明
1 | var vname1, vname2, vname3 int |
值类型和引用类型
所有像 int、float、bool 和 string 这些基本类型都属于值类型,使用这些类型的变量直接指向存在内存中的值:
当使用等号 = 将一个变量的值赋值给另一个变量时,如:j = i,实际上是在内存中将 i 的值进行了拷贝
可以通过 &i 来获取变量 i 的内存地址
如下, 可以看到, i 和 j 实际上对应的内存地址是不同的。
1 | var i = 1 |
堆内存和栈内存:栈内存用于存储局部变量以及函数调用的信息。堆内存用于存储程序中创建的对象和实例。
变量的值存储在堆内。
更复杂的数据通常会需要使用多个字,这些数据一般使用引用类型保存。
位(Bit)是数据存储的最小单位,字节(Byte)常用于处理字符级数据,而字(Word)则是计算机硬件设计的基本单位,与特定计算机体系结构有关。
一个引用类型的变量 r1 存储的是 r1 的值所在的内存地址(数字),或内存地址中第一个字所在的位置。
这个内存地址称之为指针,这个指针实际上也被存在另外的某一个值中。
引用类型的变量存储的是一个指向实际数据的引用。
当将一个引用类型的变量赋值给另一个变量时,两个变量将引用同一个数据,修改一个变量会影响到另一个变量。
注意事项
- 同一个变量不能被重复初始化声明 ,会提示
no new variables on left side of := - 声明了局部变量没有使用,会编译报错
xxx declared but not used - 如果你想要交换两个变量的值,则可以简单地使用
a, b = b, a,两个变量的类型必须是相同 - 空白标识符 _ 也被用于抛弃值,如值 5 在:
_, b = 5, 7中被抛弃。 - _ 实际上是一个只写变量,你不能得到它的值。这样做是因为 Go 语言中你必须使用所有被声明的变量,但有时你并不需要使用从一个函数得到的所有返回值。
- 并行赋值也被用于当一个函数返回多个返回值时,比如这里的
val和错误err是通过调用Func1函数同时得到:val, err = Func1(var1)。
常量
常量是一个简单值的标识符,在程序运行时,不会被修改的量。
常量中的数据类型只可以是布尔型、数字型和字符串型。
定义格式如下
const identifier [type] = value
可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。
常量也可以用作枚举
1 | const ( |
数字 0、1 和 2 分别代表未知性别、女性和男性。
常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过:
1 | const ( |