Golang中的切片遍历
Golang中的切片遍历切片的遍历和数组的遍历非常类似,可以使用for循环索引遍历,或者for range循环。
for循环索引遍历123456789101112131415package mainimport "fmt"func for_slice() { var s1 = []int{1, 2, 3, 4, 5} l := len(s1) for i := 0; i < l; i++ { fmt.Printf("s1[1]: %v\n", s1[i]) }}func main() { for_slice()}
运行结果
12345s1[1]: 1s1[1]: 2s1[1]: 3s1[1]: 4s1[1]: 5
for range循环索引遍历12345678910111213package mainimport "fmt"func forr_slice() { var s2 = []int{1, 2, 3, 4, 5 ...
Golang中的切片初始化
Golang中的切片初始化切片的初始化方法很多,可以直接初始化,也可以使用数组初始化等。
切片如何切分要注意,指定下标切分的时候是,左包含,右不包含的
只有[:]则是所有
123456789101112131415161718package mainimport "fmt"func slice1() { var s1 = []int{1, 2, 3, 4, 5, 6} s2 := s1[0:3] // [) fmt.Printf("s2: %v\n", s2) s3 := s1[3:] fmt.Printf("s3: %v\n", s3) s4 := s1[3:5] fmt.Printf("s4: %v\n", s4) s5 := s1[:] fmt.Printf("s5: %v\n", s5)}func main() { slice1()}
运行结果
1234s2: [1 2 3]s3: [4 5 6]s4: [4 5]s5: ...
Golang中的切片
Golang中的切片数组是固定长度,可以容纳相同数据类型的元素的集合。当长度固定时,使用还是带来一些限制,比如:有时候申请的长度太大浪费内存,太小又不够用。
鉴于这个原因,我们有了Golang中的切片的概念。
可以把切片理解为,可变长度的数组,其实它底层就是使用数组实现的,增加了自动扩容功能。
切片(Slice)是一个拥有相同类型元素的可变长度的序列。
Golang切片的语法声明一个切片和声明一个数组类似,只要不添加长度就可以了。
1var identifier []type
切片是引用类型,可以使用make函数来创建切片:
123var slice1 []type = make([]type, len)也可以简写为slice1 := make([]type, len)
也可以指定容量,其中capacity为可选参数。
1make([]T, length, capacity)
这里的len是数组的长度并且也是切片的初始长度。
Golang的切片实例未初始化切片1234567891011121314package mainimport "fmt"func basic_ ...
Golang中的访问数组元素
Golang中的访问数组元素可以通过下标的方式,来访问数组元素。数组的最大下标为数组长度-1,大于这个下标会发生数组越界。
访问数组元素12345678910111213141516171819package mainimport "fmt"func change1_variable() { var a1 [2]int a1[0] = 1 a1[1] = 2 fmt.Printf("a1: %v\n", a1) fmt.Println("---------------") a1[0] = 100 a1[1] = 200 fmt.Printf("a1: %v\n", a1)}func main() { change1_variable()}
运行结果
123a1: [1 2]---------------a1: [100 200]
根据数组长度遍历数组可以根据数组长度,通过for循环的方式来遍历数组,数组的长度可以使用len函数来获得。
12345678910111 ...
Golang中的数组
Golang中的数组数组是相同数据类型的一组数据的集合,数组一旦定义长度不能修改,数组可以通过下标(或者叫索引)来访问元素。
Golang数组的定义数组的定义语法如下:
1var variable_name [SIZE] variable_type
variable_name:数组名称
SIZE:数组长度,必须是常量
variable_type:数组保存元素的类型
实例先看下类型
1234567891011121314package mainimport "fmt"func test_variable() { var a1 [2]int var a2 [3]string fmt.Printf("a1: %T\n", a1) fmt.Printf("a2: %T\n", a2)}func main() { test_variable()}
运行结果
12a1: [2]inta2: [3]string
从上面这个运行结果可以看出,数组的长度和元素类型共同组成了数组的类型。
Golang数 ...
Golang中的流程控制关键字goto
Golang中的流程控制关键字gotogoto语句通过标签进行代码间的无条件跳转。goto语句可以在快速跳出循环、避免重复退出上有一定的帮助。
Golang中使用goto语句能简化一些代码的实现过程。例如双层嵌套的for循环要退出时。
Golang中的关键字goto实例跳转到指定标签12345678910111213141516171819package mainimport "fmt"func goto_lab() { i := 1 if i >= 2 { fmt.Println("2") } else { goto END }END: fmt.Println("END...")}func main() { goto_lab()}
运行结果
1END...
跳出双重循环12345678910111213141516171819package mainimport "fmt"func goto_doublefor( ...
Golang中的关键字continue
Golang中的关键字continuecontinue只能用在循环中,在go中只能用在for循环中,它可以终止本次循环,进行下一次循环。
在continue语句后添加标签时,表示开始标签对应的循环。
Golang中的continue实例输出1到10之间的偶数普通版本12345678910111213141516171819package mainimport "fmt"func test_continue() { for i := 0; i < 10; i++ { if i%2 == 0 { fmt.Printf("i: %v\n", i) } else { continue } fmt.Println("跳出当前循环,进行下一次循环") }}func main() { test_continue()}
运行结果
12345678910i: 0跳出当前循环,进行下一次循环i: 2跳出当前循环,进行下一次循 ...
Golang中的流程控制关键字break
Golang中的流程控制关键字breakbreak语句可以结束for、switch和select的代码块。
Go语言使用break注意事项1.单独在select中使用break和不使用break没有什么区别。
2.单独在表达式switch语句,并且没有fallthough,使用break和不使用break没有什么区别。
3.单独在表达式switch语句,并且有fallthough,使用break能够终止fallthough后面的case语句的执行。
4.带标签的break,可以跳出多层select/switch作用域。让break更加灵活,写法更加 简单灵活,不需要使用控制变量一层一层跳出循环,没有带break的只能跳出当前语句块。
Golang中break关键字实例跳出for循环1234567891011121314151617package mainimport "fmt"func for_break() { for i := 0; i < 10; i++ { fmt.Printf("i: %v\n", i) i ...
Golang中的for range循环
Golang中的for range循环Golang中可以使用for range遍历数组、切片、字符串、map及通道(channel)。通过for range遍历的返回值有以下规律:
1.数组、切片、字符串返回索引和值
2.map返回键和值
3.通道(channel)只返回通道内的值。
Go语言for range实例循环数组12345678910111213141516package mainimport "fmt"func f1() { var a = [...]int{1, 2, 3} for i, v := range a { //i是索引,v是值 fmt.Printf("i: %v\n", i) fmt.Printf("v: %v\n", v) }}func main() { f1()}
运行结果
123456i: 0v: 1i: 1v: 2i: 2v: 3
或者,打印的好看点,可以这样。
1234567891011121314pa ...
Golang中的for循环语句
Golang中的for循环语句Golang中的for循环,只有for关键字,去除了像其他语言中的while和do while
Golang中的for循环语法123for 初始语句;条件表达式;结束语句{ 循环体语句}
注意:for表达式不用加括号
Golang中的for循环实例循环输出1到10-标准12345678910111213package mainimport "fmt"func f1() { for i := 1; i <= 10; i++ { fmt.Printf("i: %v\n", i) }}func main() { f1()}
运行结果12345678910i: 1i: 2i: 3i: 4i: 5i: 6i: 7i: 8i: 9i: 10
初始条件,可以写到外面12345678910111213package mainimport "fmt"func f2() { i := 1 for ; i < ...