声明
func TestVal(t *testing.T){
var s0 string = "hello"
s1 := "world"
t.Log(s0,s1)
}

image.png
- Go是静态类型语言,类型推断是在编译期完成,不会对运行效率产生影响
- 短变量声明多用于if for switch语句的临时变量,只能用于函数体内部
- 短变量声明的好处:可以对同一代码块的变量重声明。例如以下这种情况就只能用短变量声明
func TestVal(t *testing.T){
for var i = 0; i<5; i++ {
t.Log(i)
}
}
result: expected operand, found 'var'
变量类型
func TestType(t *testing.T){
var s1 string = "hello"
t.Log(reflect.TypeOf(s1))
}
//反射
func TestType(t *testing.T){
var s1 string = "a"
s2,isString := interface{}(s1).(string)
i,isInt := interface{}(s1).(int)
t.Log(s2,isString)
t.Log(i,isInt)
}
//利用断言来判断 转换类型
type str string
func TestType(t *testing.T){
var s1 str = "hello"
s2 := str("world")
t.Log(s1,s2)
}
- 自定义类型
- go语言不允许隐式类型转化、别名和原有类型也不允许
- 允许显式转化如:
int64(a)
- 转化溢出报错
- math包有预定义值
- 指针类型不支持指针运算
- 空指针的值为nil
- string是值类型,空值为空字符串
类型分类
- 值类型 => 内置类型
- 引用类型
切片类型,字典类型、通道类型、函数类型、接口类型
网友评论