变量和常量
1.标识符与关键字
标识符:
在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123。大写字母和小写字母是不同的:heapSort和Heapsort是两个不同的名字。
关键字:
关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关键字和保留字都不建议用作变量名。
Go语言中有25个关键字:
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
Go语言中的37个保留字:
Constants: true false iota nil
Types: int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error
Functions: make len cap new append copy close delete
complex real imag
panic recover
声明语句定义了程序的各种实体对象以及部分或全部的属性。
Go语言主要有四种类型的声明语句:var、const、type和func,分别对应变量、常量、类型和函数实体对象的声明。
2.变量
什么是变量
程序运行过程中,所有的数据都是保存在内存的。
如果我们要在代码中操作某个数据时,我们可以通过直接访问这个数据的内存地址找到它,也可以通过将这个数据起一个名称,通过这个名称访问该数据。这个名称就是变量名。
变量保存的是数据的内存地址。
变量类型
变量的功能是存储数据。不同的变量保存的数据类型可能不同。编程语言经过这么多年发展,已经形成了一套固定的数据类型。常见的变量的数据类型有:整型,浮点型,布尔型等。
Go语言中每一个变量都有自己的类型,并且变量必须经过声明才能开始使用。
变量声明
Go语言中变量必须要在声明后才能使用。
Go语言的变量声明后必须使用。
Go语言的变量声明格式为:
var 变量名 变量类型
变量声明以关键字var开头,变量类型放在变量的后面,行尾无需分号。举例:
var name string
var age int
var isOk bool
变量的初始化
Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。
每个变量会初始化成其默认类型的0值。比如整型浮点型变量默认值为0。字符串变量的默认值为空字符串。布尔型变量默认为false。切片,函数,指针变量的默认为nil。
当然我们也可以在声明变量的时候为其指定初始值。变量初始化的标准格式如下:
var 变量名 类型 = 表达式
举例:
var name string = “google”
var age int = 18
或者 一次初始化多个变量
var name, age = “google”,18
类型推导
变量的类型也可以省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。
var name = “google”
var age = 18
短变量声明
在函数内部,初始化变量可以更简洁,使用:=方式声明并初始化变量。
package main
import (
“fmt”
)
// 全局变量m
var m = 100
func main() {
n := 10
m := 200 // 此处声明局部变量m
fmt.Println(m, n)
}
匿名变量
在使用多重赋值时,如果我们想要忽略某个值,可以使用匿名变量 _表示。
func foo() (int, string) {
return 10, “Q1mi”
}
func main() {
x, _ := foo()
_, y := foo()
fmt.Println(“x=”, x)
fmt.Println(“y=”, y)
}
注意:匿名变量不占命名空间,不会分配内存,所以匿名变量之间不存在重复声明。
常量
相当于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。
常量使用const定义,常量在定义的时候必须赋值。
const pi = 3.1415
const e = 2.7182
多个常量也可以一起声明:
const (
pi = 3.1415
e = 2.7182
)
const同时声明多个常量时,如果省略了值则表示和上面一行的值相同。 例如:
const (
n1 = 100
n2
n3
)
//上面示例中,常量n1、n2、n3的值都是100
iota
iota是go语言的常量计数器,只能在常量的表达式中使用。
iota在const关键字出现时将被重置为0.
const中每新增一行常量声明使用iota计数一次。(iota相当于const语句块中的行索引)
几种常见的iota示例:
举个例子:
const (
n1 = iota //0
n2 //1
n3 //2
n4 //3
)
几个常见的iota示例:
使用_跳过某些值
const (
n1 = iota //0
n2 //1
_
n4 //3
)
多个iota定义在一行
const (
a, b = iota + 1, iota + 2 //1,2
c, d //2,3
e, f //3,4
)
练习代码:
package main //打印水的沸点 import "fmt" const boilingF = 212.0 func main() { var f = boilingF var c = (f-32)*5/9 fmt.Printf("水的沸点 = %g°F or %g°C ") } func fToC( f float64) float64 { return (f-32) * 5/9 }