l
lizhao
V1
2022/09/12阅读:32主题:橙心
Golang常量与条件语句
Go常量
基本用法
相对于变量,常量是恒定不变的值,只能赋值一次,用const
关键字,常量在定义的时候必须赋值
const name = "小明"
name = "小红" // 编译器会报错,无法分配
const age = 18
多个常量一起
声明
const (
name = "小明"
age = 18
sex = "男"
)
如果是批量声明的常量,除了第一个其它的常量右边的初始化表达式可以省略,省略的初始化表达式表示使用前面的常量初始化表达式
// 这种写法,三个值都会被赋值为小明
const (
name = "小明"
age
sex
)
// 这种打印结果是 name、age = 小明 sex、school、city = 男
const (
name = "小明"
age
sex = "男"
school
city
)
iota常量生成器
-
iota
是go语言的常量计数器,只能在常量的表达式中使用 -
如果const声明的第一个变量值赋为iota,则重置为0,下面的每一个常量值为自动加一,定义枚举时很有用 -
iota可以理解为索引 index
-
有iota赋值的地方,下面连续没有赋值的行都返回索引
// 打印结果为 0 1 2 3 4
const (
name = iota
age
sex
school
city
)
// 打印结果为 0 18 2 3 4
const (
name = iota
age = 18
sex = iota
school
city
)
// 打印结果为 name age sex 分别为 0 1 2 school city 返回值为 18 18
const (
name = iota
age = iota
sex = iota
school = 18
city
)
使用 _
跳过指定值
// 打印结果 name age sex 值分别为 0 1 2 city 值为 4
const (
name = iota
age = iota
sex = iota
_
city
)
// 打印结果 name age sex 值分别为 0 1 2 city 值为 18
const (
name = iota
age = iota
sex = iota
_ = 18
city
)
多个iota定义在一行
const (
name, a = iota, iota + 1
age, b
sex, c
_, d
city, e
)
打印结果:
name age sex city 值 为 0 1 2 4
a b c d e 值 1 2 3 4 5
条件语句if
-
条件语句指定 一个或多个
条件,通过条件为true在决定是否执行语句,在false执行另外语句 -
可以省略表达式括号 -
代码块 左
括号必须在表达式尾部 -
初始化语句,可以定义代码块局部变量
if 布尔表达式 { // 括号必须在表达式尾部,不能单独换行
/* 在布尔表达式为 true 时执行 */
}
// 错误写法
if true
{ //单独一行
}
条件语句if使用
func main() {
/* 定义局部变量 */
var a int = 10
/* 使用 if 语句判断布尔表达式 */
if a < 20 {
/* 如果条件为 true 则执行以下语句 */
fmt.Printf("a 小于 20\n" )
}
fmt.Printf("a 的值为 : %d\n", a)
}
以上代码结果
a 小于 20
a 的值为 : 10
if...else使用
if 布尔表达式 {
/* 在布尔表达式为 true 时执行 */
} else {
/* 在布尔表达式为 false 时执行 */
}
if条件语句声明局部变量
a := 30
if x := 3; a > 20 {
println(x)
}
// 打印结果 x = 3
条件语句switch
-
可以省略 break,默认自动终止 -
同时测试多个符合条件的值,使用逗号分割,case val1, val2, val3
语法
-
var1 可以是任何类型,val1 必须是同类型的任意值
switch var1 {
case val1:
...
case val2:
...
default:
...
}
声明一个条件判断
// 声明int类型a
var a int = 30
switch a {
case 10:
println("10")
case 20:
println(20)
case 30:
println(30)
}
多个符合条件判断
var a int = 50
switch a {
case 10:
println("10")
case 20:
println(20)
case 30, 40, 50:
println(30)
}
循环语句for
for i := 0; i < 10; i++ {
println(i)
}
for死循环
for {
println("abc")
}
循环语句range
Golang range类似迭代器操作,返回 (索引, 值) 或 (键, 值)。
for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环。格式如下:
for key, value := range oldMap {
newMap[key] = value
}
numbers := [6]int{1, 2, 3, 5}
for i, x := range numbers {
fmt.Printf("第 %d 位 x 的值 = %d\n", i, x)
}
打印结果
第 0 位 x 的值 = 1
第 1 位 x 的值 = 2
第 2 位 x 的值 = 3
第 3 位 x 的值 = 5
第 4 位 x 的值 = 0
第 5 位 x 的值 = 0
作者介绍
l
lizhao
V1