go语言入门-变量
变量声明的方式
普通声明方式-不赋值
var name string //""
var score float32 //0.0f
var isFail bool //false
批量声明方式-不复制
var (
name string //""
score float32 //0.0f
isFail bool //false
)
不管是批量声明还是普通声明方式都会初始化普通变量。普通变量默认值如下: |
---|
func main() {
var (
b bool
i int
i8 int8
i16 int16
i32 int32
i64 int64
ui uint
ui8 uint8
ui16 uint16
ui32 uint32
ui64 uint64
f32 float32
f64 float64
s string
ru rune
by byte
)
fmt.Printf("local variable -> bool default value ->%#v\n", b)
fmt.Printf("local variable -> int default value ->%#v\n", i)
fmt.Printf("local variable -> int8 default value ->%#v\n", i8)
fmt.Printf("local variable -> int16 default value ->%#v\n", i16)
fmt.Printf("local variable -> int32 default value ->%#v\n", i32)
fmt.Printf("local variable -> int64 default value ->%#v\n", i64)
fmt.Printf("local variable -> int64 default value ->%#v\n", i64)
fmt.Printf("local variable -> uint default value ->%#v\n", ui)
fmt.Printf("local variable -> uint8 default value ->%#v\n", ui8)
fmt.Printf("local variable -> uint16 default value ->%#v\n", ui16)
fmt.Printf("local variable -> uint32 default value ->%#v\n", ui32)
fmt.Printf("local variable -> uint64 default value ->%#v\n", ui64)
fmt.Printf("local variable -> uint64 default value ->%#v\n", ui64)
fmt.Printf("local variable -> float32 default value ->%#v\n", f32)
fmt.Printf("local variable -> float64 default value ->%#v\n", f64)
fmt.Printf("local variable -> string default value ->%#v\n", s)
fmt.Printf("local variable -> string default value ->%#v\n", ru)
fmt.Printf("local variable -> string default value ->%#v\n", by)
/**
output:
local variable -> bool default value ->false
local variable -> int default value ->0
local variable -> int8 default value ->0
local variable -> int16 default value ->0
local variable -> int32 default value ->0
local variable -> int64 default value ->0
local variable -> int64 default value ->0
local variable -> uint default value ->0x0
local variable -> uint8 default value ->0x0
local variable -> uint16 default value ->0x0
local variable -> uint32 default value ->0x0
local variable -> uint64 default value ->0x0
local variable -> uint64 default value ->0x0
local variable -> float32 default value ->0
local variable -> float64 default value ->0
local variable -> string default value ->""
local variable -> string default value ->0
local variable -> string default value ->0x0
*/
}
普通变量声明并赋值
var firstName string = "syouya\\" //"syouya\"--字符串赋值特殊字符会转义
var secondName string = `shiraki\` // "shiraki\" ``-包含的字符不会转义
类型推导声明变量
var age = 12 //整型字面值常量默认转int
fmt.Println(age)
fmt.Printf("%T\n", age)
var score = 1.0 //小数字面值常量默认装float64
fmt.Printf("%T %#v\n", score, score)
/**
output:
12
int
float64 1
*/
短变量声明
s3 := "哈哈哈"
fmt.Printf("%T %#v\n", s3, s3)
/**
output:
string "哈哈哈"
*/
备注:
- 短变量声明只能放在函数中使用
- 短变量声明只能在当前作用域使用-如下
//i在作用域1
for i:= 0; i < len(s4); i++ {
fmt.Printf("byte s[%d] = [%#v]\n", i, s4[i])
}
//i在作用域2
s5 := []rune(s4)
for i:= 0; i < len(s5); i++ {
fmt.Printf("rune s[%d] = [%#v]\n", i, s5[i])
}
//i在作用域3
{
i := 10
fmt.Printf("rune i = [%#v]\n", i)
//i := 12 //No new variables on left side of := 编译报错
}
/***
output:
byte s[0] = [0x74]
byte s[1] = [0x65]
byte s[2] = [0x73]
byte s[3] = [0x74]
byte s[4] = [0xe6]
byte s[5] = [0x88]
byte s[6] = [0x91]
byte s[7] = [0xe4]
byte s[8] = [0xbb]
byte s[9] = [0xac]
rune s[0] = [116]
rune s[1] = [101]
rune s[2] = [115]
rune s[3] = [116]
rune s[4] = [25105]
rune s[5] = [20204]
*/
变量类型
普通变量
var firstName string = "syouya\\" //"syouya\"--字符串赋值特殊字符会转义
var secondName string = `shiraki\` // "shiraki\" ``-包含的字符不会转义
匿名变量
匿名变量用一个下划线标识
func main() {
a, b := demo("w", "x")
fmt.Println(a, b)
//占位第一个返回值,忽略第一个返回值
_, c := demo("w", "x")
fmt.Println(c)
//占位第二个返回值,葫芦第二个返回值
d, _ := demo("w", "x")
fmt.Println(d)
/**
output:
x w
w
x
*/
}
变量整理的思维导图如下: