Go语言变量说明
变量声明及初始化
var name type(type是类型)
Go语言的基本类型有:
bool
string
int、int8、int16、int32、int64
uint、uint8、uint16、uint32、uint64、uintptr
byte // uint8 的别名
rune // int32 的别名 代表一个 Unicode 码
float32、float64
complex64、complex128
当一个变量被声明之后,系统自动赋予它该类型的零值:int 为 0,float 为 0.0,bool 为 false,string 为空字符串,指针为 nil 等
变量的命名规则遵循骆驼命名法,即首个单词小写,每个新单词的首字母大写,例如:numShips 和 startDate 。
简短声明方式
名字 := 表达式 (前提是这个名字之前没有被声明过,要不然会报错)
变量的初始化
var hp = 100(可以省去int,直接赋值)
短变量声明及初始化
hp := 100(hp在次之前不能被声明过)
匿名变量
在编码过程中,可能会遇到没有名称的变量、类型或方法。虽然这不是必须的,但有时候这样做可以极大地增强代码的灵活性,这些变量被统称为匿名变量。
匿名变量 不占用内存空间,不会分配内存。匿名变量与匿名变量之间也不会因为多次声明而无法使用。
复数类型
Go语言拥有两种复数类型,分别是 complex64(32 位实数和虚数)类型和 complex128(64 位实数和虚数)类型。
bool类型
布尔值可以和 &&(AND)和 ||(OR)操作符结合
&& 的优先级比||高(&& 对应逻辑乘法,|| 对应逻辑加法,乘法比加法优先级要高)
字符类型
- 一种是 uint8 类型,或者叫 byte 型,代表了 ASCII 码的一个字符。
- 另一种是 rune 类型,代表一个 UTF-8 字符,当需要处理中文、日文或者其他复合字符时,则需要用到 rune 类型。rune 类型等价于 int32 类型。
byte类型是uint8的别名
Unicode(UTF-8),在书写 Unicode 字符时,需要在 16 进制数之前加上前缀\u或者\U。因为 Unicode 至少占用 2 个字节,所以我们使用 int16 或者 int 类型来表示。如果需要使用到 4 字节,则使用\u前缀,如果需要使用到 8 个字节,则使用\U前缀。
Unicode 与 ASCII 类似,都是一种字符集。
数据类型转换
不存在隐式类型转换,因此所有的类型转换都必须显式的声明
从一个取值范围小的转换到取值范围大的,要不然会导致精度丢失
valueOfTypeB = typeB(valueOfTypeA)
类型 B 的值 = 类型 B(类型 A 的值)
指针类型
一个指针变量可以指向任何一个值的内存地址,它所指向的值的内存地址在 32 和 64 位机器上分别占用 4 或 8 个字节,占用字节的大小与所指向的值的大小无关。当一个指针被定义后没有分配到任何变量时,它的默认值为 nil。指针变量通常缩写为 ptr。
- 使用在变量名前面添加&操作符(前缀)来获取变量的内存地址
- 对指针使用*操作符,也就是指针取值
常量
关键字 const 定义,用于存储不会改变的数据,常量是在编译时被创建的,即使定义在函数内部也是如此,并且只能是布尔型、数字型(整数型、浮点型和复数)和字符串型。由于编译时的限制,定义常量的表达式必须为能被编译器求值的常量表达式。
常量的值必须是能够在编译时就能够确定的,可以在其赋值表达式中涉及计算过程,但是所有用于计算的值必须在编译期间就能获得。
iota常量生成器
iota 将会被置为 0
举例:
type Weekday int
const (
Sunday Weekday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
)
周日将对应 0,周一为 1,以此类推。
字符串与数值类型的转换
- 字符串转 int:Atoi();
- int 转字符串:Itoa();
- Parse 类函数将 string 转换为指定的数值类型:ParseBool()、ParseFloat()、ParseInt()、ParseUint()。因为 string 类型转数值类型可能会失败,所以这些函数都有第二个返回值表示转换是否成功;
- Format 类函数将指定的数值类型转 string 类型:FormatBool()、FormatFloat()、FormatInt()、FormatUint();
- Append 类函数用于将指定的数值类型转换成字符串后追加到一个切片中:AppendBool()、AppendFloat()、AppendInt()、AppendUint()。
详细举例参照:http://c.biancheng.net/view/5112.html