Go语言基础知识总结(持续中) (4)

append()方法为切片同台添加元素,可以一次添加一个或者多个,还可以添加另一个其他切片中的元素。

package main import "fmt" func main() { var s []int s = append(s, 1) s = append(s, 2, 3, 4) s2 := []int{2, 3, 4} s = append(s, s2...) fmt.Println(s) }

image-20210801154725219

map使用

map:是一种无序的基于key-value的数据结构,必须初始化才可以使用。

map定义 map[keyType]valueType

KeyType:表示键的类型。

ValueType:表示键对应的值的类型。

map初始化

map默认初始值为nil,使用make()函数分配内存初始化:

make(map[keyType]valueType,[cap])

其中cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。

map使用 package main import "fmt" func main() { sourceMap := make(map[string]int, 20) sourceMap["A2rcher"] = 20 sourceMap["emo"] = 30 fmt.Println(sourceMap) fmt.Printf("type %T\n", sourceMap) }

map可以在声明的时候就填充元素:

package main import "fmt" func main() { sourceMap := make(map[string]int, 20) sourceMap["A2rcher"] = 20 sourceMap["emo"] = 30 fmt.Println(sourceMap) fmt.Printf("type %T\n", sourceMap) fmt.Println("***************") sourceTest := map[string]int{ "lucher": 20, "xs":10, } fmt.Println(sourceTest) }

判断键值对是否存在 package main import "fmt" func main() { sourceMap := make(map[string]int, 20) sourceMap["A2rcher"] = 20 sourceMap["emo"] = 30 fmt.Println(sourceMap) fmt.Printf("type %T\n", sourceMap) fmt.Println("***************") sourceTest := map[string]int{ "lucher": 20, "xs": 10, } fmt.Println(sourceTest) fmt.Printf("type %T\n", sourceTest) fmt.Println("______________________________") v, ok := sourceMap["emo"] if !ok { fmt.Println("查无此人") } else { fmt.Println(v) } }

image-20210801161216067

map遍历

for range遍历

package main import "fmt" func main() { sourceMap := make(map[string]int, 20) sourceMap["a"] = 90 sourceMap["b"] = 100 sourceMap["c"] = 60 for k, v := range sourceMap { fmt.Println(k, v) } }

如果只想遍历前面的key时,可以把v省略。但要是想遍历value时,就需要匿名变量的帮助了。

package main import "fmt" func main() { sourceMap := make(map[string]int, 20) sourceMap["赵"] = 90 sourceMap["钱"] = 100 sourceMap["孙"] = 60 for k, v := range sourceMap { fmt.Println(k, v) } for k := range sourceMap { fmt.Println(k) } for _, m := range sourceMap { fmt.Println(m) } }

image-20210801161812669

delete()函数删除键值对

image-20210801161851688

元素为map类型的切片

image-20210801162638230

这个可以理解为在切片里面,各个元素得类型是map。

例如:

var a = make([]map[string]int,3) 值为切片类型的map

image-20210801162706044

这个可以理解为在map函数里面key值是切片。

例如:

var a1 = make(map[string][]int,3) 函数

函数.最重要的一部分

函数定义 func 函数名(参数)(返回值){ 函数体 }

example:

func TestFunction(x int,y,int)int{ return x + y }

对于参数部分如果两个参数类型是一样的可以简化

func TestFunction(x,y int)int{ return x + y } 可变参数

可变参数就是参数数量不固定,参考数组...

image-20210801164303983

返回值

Go语言中函数支持多返回值,函数如果有多个返回值时必须用()将所有返回值包裹起来。

func calc(x, y int) (int, int) { sum := x + y sub := x - y return sum, sub }

返回值命名

函数定义时可以给返回值命名,并在函数体中直接使用这些变量,最后通过return关键字返回。

例如:

func calc(x, y int) (sum, sub int) { sum = x + y sub = x - y return }

返回值补充

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwwfxw.html