1.goto跳转
package main
import "fmt"
func main() {
total := 0
index := 0
max := 100
START:
index += 1
total += index
if index == max {
goto END
}
goro START
END:
fmt.Println("total")
}
2.数组类型
1)声明
数组声明需要指定组成元素的类型以及存储元素的数量(长度)。在数组声明后。其长度不可修改,数组的每个元素会根据对应类型的零值进行初始化。
var names [10]string
var scores [10]int
初始化元素
names = []string{"1","2","3"}
空切片,已经初始化但是元素数量为0
names = []string{}
赋值数组
names = []string{1: "05", 100: "abc"}
2)字面量
a)指定数组长度:[length]type{v1,v2,v3}
例 var user [3]string = [3]string{"kk","ee","rr"}
b)使用初始化元素数量推到数组长度[...]type{v1,v2,v3}
例 bounds := [...]int{10, 20, 30, 40}
c)对指定位置元素进行初始化[length]type{a:1, b:2, c:3}
例 names = []string{1: "05", 100: "abc"}
2)操作
a)关系运算 ==, !=
fmt.Println(bounds == [...]int{10, 20, 30})
fmt.Println(bounds != [...]int{10, 20, 30})
b)获取数组长度
使用len函数可获取数组长度
fmt.Println(len(bounds))
c)访问&修改
通过编号对数组元素进行访问和修改
fmt.Println(bounds[0], bounds[len(abc) - 1])
bounds[0] = "abc"
d)切片获取数组的一部分元素作为切片
fmt.Printf("%T, %q\n",lang[1:3], lang[1,3])
e)遍历
可以通过for+len+访问方式或for-range方式对数组中元素进行遍历
for i := 0; i < len(langs); i++ {
fmt.Printf("%d:%q\n", i, langs[i])
}
for i, v := range langs {
fmt.Printf("%d: %q\n",i, v)
}
使用for-range遍历数组,range返回的两个元素分别为数组元素索引和值
3.映射(map)
映射是存储一系列无序的key/value对,通过key来对value进行操作(增删改查)映射的key只能为可使用==运算符的类型,value可以为任意类型
1)声明
map声明需要指定组成元素key,value的类型,在声明后,会被初始化为nil,表示暂不存在的映射
var tels map[string]string
var points map[[2]int]float64
fmt.Printf("%T, %t, %v\n", tels, tels == nil, tels)
2)初始化
使用字面量初始化
tels = map[string]string{"kk":"11111", "ll":"gggg"}
fmt.Printf("%q\n", tels)
使用make函数进行初始化
weight := make(map[string]float64)
fmt.Println(weight)
3)操作
a)获取元素的数量
使用len函数获取映射元素的数量
fmt.Println(len(tels))
b)访问
sudents := map[int]string{1: "kk", 2: "rr"}
students01 := map[int]map[string]string{1: map[string]string{"name": "kk"}}
fmt.Printf("%v, %q, %q\n", students, students[1], students[2])
当访问key存在映射时则返回对应的值,否则返回值类型的零值
c)判断key是否存在
通过key访问元素可接受两个值,第一个值为value,第二个值为bool类型标识元素是否存在,存在为true,不存在为false
student, ok := student[1]
fmt.Printf("%t, %v\n", ok, student)
d)修改&增加
使用key对映射负值时当key存在则修改key对应value,若key不存在则增加key和value
students[1] = "kl" //key存在,修改
students[3] = "pp" //key不存在,增加
e)删除
使用delete函数删除映射中已经存在的key
delete(students, 1)
delete(students, 4)
fmt.Println(students)
f)遍历
使用for-range对映射中各个元素进行遍历,range返回两个元素分别为映射的key和value
for k, v := range students {
fmt.Printf("%v:%v\n", k, v)
}