既然导入多个包可以简写,那么声明多个常量、全局变量或一般类型(非接口、非结构)是否也可以用同样的方式简写呢?
// 常量定义
const (
PI = 3.14
const1 = "1"
const2 = 2
)
// 一般类型声明
type (
newType int
type1 float32
type2 string
type3 byte
)
// 全局变量的声明与赋值
var (
name = "goer"
name1 = "1"
)
注意声明在函数体内的变量(不是全局变量了)不能用这种简写方式
Go基本类型
布尔型:bool
长度:1字节
取值范围:true、false
注意事项:不可以用数字代表true或false
整型:int/uint
根据运行平台可能是32或64
8位整型:int8/uint8
长度:1字节
取值范围:-128127/0255
字节型:byte(uint8别名)
16位整型:int16/uint16
长度:2字节
取值范围:-3276832768/065535
32位整型:int32(rune)/uint32
长度:4字节
64位整型:int64/uint64
长度:8字节
浮点型:float32/float64
长度:4/8字节
小数位:精确到7/15位小数位
复数:complex64/complex128
长度:8/16字节
足够保存指针的32位或64位整数型:uintptr
其他值类型:array、struct、string
引用类型:slice、map、chan
接口类型:interface
函数类型:func
类型零值
零值并不等于空值,而是当变量被声明为某种类型后的默认值,通常情况下默认值为0,bool为false,string为空字符串。
##类型别名
type (
byte int8
rune int32
文本 string
)
此处只是演示,不建议这样搞哈
单个变量的声明与赋值
var a int // 变量的声明
a = 123 // 变量的赋值
// 变量声明的同时赋值
var b int = 111
// 也可以省略类型由系统判断
var c = 222
// 变量的声明与赋值
// 简写方式
d := 444
多个变量的声明与赋值
全局变量的声明可使用var()
的方式进行简写,不可省略,但可使用并行方式。
所有变量都可以使用类型推断。
局部变量不可以使用var()
的方式简写,只能使用并行方式。
var (
aaa = "hello"
a,b = 1,2 // 并行的方式
)
// 多个变量的声明
var a, b, c int
// 多个变量的赋值
a, b, c = 1, 2, 3
// 多个变量声明同时赋值
var aa, bb int = 11, 22
// 简写方式
m, n := 77, 88
变量的类型转换
Go中不存在隐式转换,所有类型转换必须显式声明。
转换只能发生在两种相互兼容的类型之间。
var f float = 100.1
// 把flaot类型转为int型
b := int(f)