1.go语言的变量
- 静态语言
- 声明后才能使用
- 同一个作用域不允许声明同一个变量2次
1.关键字
-
关键字是指编程语言中预先定义好的具有特殊含义的标识符。关键字和保留字都不建议用作变量名。Go语言中有25个关键字:
break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var
2.保留字
3.变量定义
-
函数外面语句必须以关键字开头
var a = 10
-
:= 符号不能在函数外面使用
-
_ 表示忽略掉某个值
1.标准变量
func main() {
//标准声明格式
var name string
var age int
var isOk bool
fmt.Println(name, age, isOk)
}
// 0 false
2.批量声明变量
- 每声明一个变量就需要写
var 关键字比较繁琐,go语言中还支持批量变量声明:
func main() {
var (
a string
b int
c bool
d float32
)
fmt.Println(a, b, c, d)
}
3.声明变量同时制定初始值
- 变量的初始化: var 变量名 类型 = 表达式
- 每个变量会被初始化成其类型默认值,例如:整型和浮点型变量的默认为0,字符串变量的默认值为空字符串。布尔型变量默认为false。切片,函数,指针变量默认为nil。
func main() {
//声明变量同时制定初始值
var myname string = "小刚"
var myage int = 18
fmt.Println(myname, myage)
var myname2, myage2 = "小洪", 22
fmt.Println(myname2, myage2)
}
4.类型推导:根据变量定义初始值
- 有时我们会将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。
func main(){
//类型推导
//根据变量定义初始值,推导出变量类型
var name3 = "张三"
var age3 = 22
fmt.Println(name3, age3)
}
5.短变量(必须定义在函数内部)
func main() {
m := 10
fmt.Println(m)
}
6.匿名变量
- 再使用多重赋值时,如果要忽略某个值,可以使用匿名变量。匿名变量用
_ 表示。
func main() {
_,b = 1,2
fmt.Println(b)
}
-
注意事项:
- 函数外的每个语句都必须以关键字开始(var const,func等)
-
:= 不能使用再函数外面。
-
_ 多用于占位,表示忽略值。
4.fmt格式“占位符”
- Go语言的fmt包实现了格式化I/O函数,类似于C的printf和scanf
- 普通占位符
%v 相应值
%T 相应类型
%% 字面上的百分号
%t true或false
%b 二进制
%o 八进制
%X 十六进制大写
%f 浮点数,有小数点无指数
%s 输出字符串
%p 地址
2.常量
- 相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。 常量的声明和变量声明非常类似,只是把
var 换成了const ,常量在定义的时候必须赋值。
1.常量声明
- 声明的
pi 和A 这两个常量之后,再整个程序运行期间它们值都不能发生变化
package main
import "fmt"
//常量的声明
const pi = 3.1415
const A = 2.7
func main(){
fmt.Println(pi,A)
}
2.批量创建常量
- 同时声明多个常量,如果省略了值则表示和上面一行的值相同。例如:
//批量创建常量
const (
pi = 3,14
A = 2.7
)
3.iota
-
iota 是go语言的常量计数器,在常量的表达式中使用。
-
iota 在const关键字出现时将被重置为0。const中每新增一行常量声明将使iota 计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。
const (
n1 = iota //0
n2 //1
n3 //2
n4 //3
)
const (
n1 = iota //0
n2 //1
_
n4 //3
)
const (
n1 = iota //0
n2 = iota //1
n3 = 100 //100
n4 = iota //3
)
const n5 = iota //0
const (
a, b = iota + 1, iota + 2 //iota=0, 1,2
c, d = iota + 1, iota + 2 //iota=1, 2,3
e, f //iota=2 , 3,4
)
- 定义数量级 (这里的
<< 表示左移操作,1<<10 表示将1的二进制表示向左移10位,也就是由1 变成了10000000000 ,也就是十进制的1024。同理2<<2 表示将2的二进制表示向左移2位,也就是由10 变成了1000 ,也就是十进制的8。)
const (
_ = iota
KB float64 = 1 << (10 * iota)
MB
GB
TB
PB
)
func main() {
fmt.Println(KB, MB, GB, TB, PB)
}
|
请发表评论