影子变量
影子变量是什么?
在Go语言中,影子变量是内部作用域和外部作用域声明同一个名称的变量,内部作用域变量生命周期只在内部作用域不影响外部作用域。
影子变量的使用
func main() {
v := 5
if true {
v := 6
fmt.Println(v)
}
fmt.Println(v)
}
判断语句
判断语句-if
if语句的特性有哪些?
在Go语言中,if-else语句中声明变量,作用域只在if-else语句中。
if语句的使用
func main() {
n := rand.Intn(10)
if n == 0 {
fmt.Println(n, "0")
} else if n > 5 {
fmt.Println(n, ">5")
} else {
fmt.Println(n, "n>0 && n<=5")
}
}
func main() {
if n := rand.Intn(10); n == 0 {
fmt.Println(n, "0")
} else if n > 5 {
fmt.Println(n, ">5")
} else {
fmt.Println(n, "n>0 && n<=5")
}
}
switch语句
switch特性有哪些?
在Go语言中,switch语句不对条件值有限制,并且不会连续执行case语句
switch后是变量,如何处理多个分支具有相同逻辑的情况?
在Go语言中,可以使用逗号将多个匹配的值分开。
switch不对条件值有限制?
在Go语言中,任何可以使用==比较的类型均可以在switch语句中使用。
switch语句-fallthrough关键字
fall through是什么?
在Go语言中,fall through关键字会接着执行下个case块。
switch语句-for switch语句
for-switch语句如何跳出循环?
在Go语言中,可以在for语句上加一个标签,并在break语句处使用标签。
如果你不使用标签,默认只会退出一个case分支。
循环语句
循环语句-for
标准形式
func main() {
for i:=0;i<10;i++{
fmt.Println(i)
}
}
使用条件比较
func main() {
i := 1
for i < 100 {
fmt.Println(i)
i = i * 2
}
}
无限循环
func main() {
for {
fmt.Println("我爱你")
}
}
循环语句-for range循环
func main() {
for i, v := range []int{1, 2} {
fmt.Println(i, v)
}
}
循环语句-for语句的标签
如何跳出双层循环?
在Go语言中,跳出双层循环可以使用for语句的标签。
func main() {
for _, sample := range []string{"hello", "wo"} {
var b bool
for i, v := range sample {
fmt.Println(i, v, string(v))
if v == 'l' {
b = true
continue
}
}
if b == true {
continue
}
}
}
func main() {
outer:
for _, sample := range []string{"hello", "wo"} {
for i, v := range sample {
fmt.Println(i, v, string(v))
if v == 'l' {
continue outer
}
}
}
}
控制语句
控制语句-break打断循环
控制语句-continue跳出循环
控制语句-goto语句
goto语句是什么?
在Go中,goto语句指定一个指向代码行的标签,然后执行跳转到该行。
goto语句的使用场景?
我们不想执行函数的部分代码,又想执行到函数的尾部。
goto语句注意事项有哪些?
你不能在任何地方跳转。Go语言禁止跳过变量声明、跳转到内部或平行代码块。
goto禁止跳过变量声明
goto的使用场景
不使用goto解决方法