go | map、multiple returnvalues、variadic function、recursion

map

m := make(map[string]int)
	m["zhangsan"] = 22
	m["lisi"] = 44
	fmt.Println("map: ", m)

	v1 := m["zhangsan"]
	fmt.Println("v1: ", v1)

	delete(m, "zhangsan")
	fmt.Println("map: ", m)

	clear(m)
	fmt.Println("map: ", m)

	_, prs := m["zhangsan"]
	fmt.Println("prs: ", prs)

	n1 := map[string]int{"zhangsan": 22, "lisi": 44}
	n2 := map[string]int{"zhangsan": 22, "lisi": 44}

	if maps.Equal(n1, n2) {
		fmt.Println("n1 == n2")
	} else {
		fmt.Println("n1 != n2")
	}
# 运行结果

map:  map[lisi:44 zhangsan:22]
v1:  22
map:  map[lisi:44]
map:  map[]
prs:  false
n1 == n2

注意定义map 初始化的时候
一个是使用 make make(map[string]int) 另一个是直接使用 map[string]int{“zhangsan”:22, “lisi”:44}

一个函数返回多个值

func a2() (int, int) {

	return 3, 6
}

main(){
	a, b := a2()
	fmt.Println(a, b, "a + b = ", a+b)

	_, c := a2()
	fmt.Println(c)
}
# 运行结果

3 6 a + b =  9
6

variadic function 可变参函数

// 和c/c++ 一样 也是 用... 表示可变参数
// 参数  ... 参数类型

func a3(nums ...int) {
	fmt.Println(nums, " ")
	tatal := 0
	for _, num := range nums {
		tatal += num
	}
	fmt.Println(tatal)
}
func main(){
	a3(1, 2, 3, 4, 5)
# 运算结果
[1 2 3 4 5]  
15

递归
go 中闭包也可以递归,但是需要先用 var 声明

func a4(a int) int {
	if a == 0 {
		return 1
	}
	return a * a4(a-1)
}
func main(){
	fmt.Println("a4(5) :", a4(5))
	var fib func(n int) int

	fib = func(n int) int {
		if n < 2 {
			return n
		}
		return fib(n-1) + fib(n-2)
	}
	/*
		4
			3
				2
					1 ==>1
					0 ==>0

				1 ==> 1
			2
				1 ==>1
				0 ==>0
	*/
	fmt.Println("the ans is ", fib(4))
}
# 运行结果

a4(5) : 120
the ans is  3

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-29 02:58:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-29 02:58:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-29 02:58:02       87 阅读
  4. Python语言-面向对象

    2024-03-29 02:58:02       96 阅读

热门阅读

  1. 什么是jQuery?

    2024-03-29 02:58:02       41 阅读
  2. 全球变暖(dfs和bfs)

    2024-03-29 02:58:02       40 阅读
  3. 数据结构与算法-分治算法

    2024-03-29 02:58:02       42 阅读
  4. CAS中的ABA问题

    2024-03-29 02:58:02       36 阅读
  5. linux -- sysctl详解1

    2024-03-29 02:58:02       39 阅读
  6. 互联网摸鱼日报(2024-03-27)

    2024-03-29 02:58:02       44 阅读
  7. --内部类

    2024-03-29 02:58:02       34 阅读
  8. RC522 读卡

    2024-03-29 02:58:02       35 阅读
  9. 1143马的遍历bfs

    2024-03-29 02:58:02       40 阅读
  10. Go程序设计语言 学习笔记 第六章 方法

    2024-03-29 02:58:02       33 阅读
  11. 常见算法之快速排序

    2024-03-29 02:58:02       37 阅读