Golang学习笔记2——数据类型、变量、常量
数据类型
Go语言数据类型可以分为以下四种:
布尔型 | true或false,例如 var b bool = true |
数字类型-整型 | uint8、uint16、uint32、uint64、int8、int16、int32、int64、int、uint、uintptr、byte、rune |
数字类型-浮点型 | float32、float64、complex32、complex64 |
字符串类型 | Go的字符串就是由字节组成的定长数组。Go语言的字符串使用UTF-8编码标识Unicode文本 |
派生类型 | (a) 指针类型(Pointer) (b) 数组类型 (c) 结构化类型(struct) (d) Channel 类型 (e) 函数类型 (f) 切片类型 (g) 接口类型(interface) (h) Map 类型 |
变量
Go语言变量声明:
// Go语言变量声明使用var关键字,变量类型跟在变量之后
var x int
// 可以同时声明多个变量
var x, y int
// 未初始化的变量默认为零值(0、false、""、nil)
// 声明变量时进行初始化
var x, y int = 1, 2
// 根据值自动推断变量类型
var x, y = 1, false
// :=语句,声明的同时进行初始化
x, y := 1, false
int、float、bool 和 string 这些基本类型都属于值类型,可以通过&获取变量地址
局部变量未在相同的代码块中使用,则会报错。而全局变量允许声明但不适用。
常量
常量是在程序运行时不会被修改的量,只可以是数字型、布尔型和字符串型
// Go语言常量定义
// const identifier [type] = value
const b string = "abc" // 显式类型定义
const b = "abc" // 隐式类型定义
const a, b = 1, 2 // 多常量定义
常量的应用
//用作枚举
const (
Unknown = 0
Female = 1
Male = 2
)
常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值,必须时内置函数
package main
import "unsafe"
const (
a = "abc"
b = len(a)
c = unsafe.Sizeof(a)
)
func main(){
println(a, b, c)
}
iota
iota是Go语言中的特殊常量,iota在const关键字出现时被重置为0,然后const每新增1行,iota将计数1次(iota += 1),例如:
package main
import "fmt"
func main() {
const (
a = iota //0
b //1
c //2
d = "ha" //独立值,iota += 1
e //"ha" iota += 1
f = 100 //iota +=1
g //100 iota +=1
h = iota //7,恢复计数
i //8
)
fmt.Println(a,b,c,d,e,f,g,h,i) //输出0 1 2 ha ha 100 100 7 8
}