Let's GO(二)

人生苦短,Let’s GO

今天我学了什么?

1. Map

map:映射,使用散列表(hash)实现
map[keyType]valueType

var a map[string]int
var a map[string]int
//defaule nil
fmt.Println(a==nil)
//init make(map,cap) 
a = make(map[string]int,10)
a["一"] = 1
a["二"] = 2
a["四"] = 4
a["五"] = 5
fmt.Println(a)
fmt.Printf("a:%#v\n",a)
b := map[int]bool {
		1 : true,
		2 : false,
	}
fmt.Printf("b:%#v\n",b)
// 探测是否存在map[key]
f,ok := a["三"]
fmt.Println(f,ok)
//ok == true

map默认是无序的,怎么让它按一定的顺序操作呢

//用slice取key
keys := make([]string,0,100)
	for k := range c  {
		keys = append(keys,k)
	}
	//key排序
	sort.Strings(keys)
	for _,key := range keys {
		fmt.Println(key,c[key])
	}

有点绕口的两个东西,想起了c++的指针常量和常量指针…

//mapslice
	//init slice,then init map
	var mapSlice = make([]map[string]int,8,8)
	mapSlice[0] = make(map[string]int,10)
	mapSlice[0]["hello"] = 1
	fmt.Println(mapSlice)
	//slicemap
	//init map, then init slice
	var sliceMap = make(map[string][]int,10)
	sliceMap["hello"] = make([]int,0,10)
	sliceMap["hello"] = append(sliceMap["hello"],1,2,3,4,5)
	fmt.Println(sliceMap)

map 东西还挺多的哈

2.函数

func name() (return) { //左大括号一定要写在同一行,不然无效
}

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

//可变参数(...)
func intsum2(a ...int) int  {
	ret := 0
	for _,i := range a {
		ret += i
	}
	return ret
}

//go 的函数可以return 多个值
func calc(a,b int) (sum ,sub int)  {
	return a+b,a-b
}

//函数也可做参数
func compute(x,y int,op func(int,int) int) int {
	return op(x,y)
}

//函数alias?
abc := calc
x,y  := abc(1,2)

//匿名函数:直接写在调用的地方
func() {
		fmt.Println("Anonymous Function")
	}() //记得加()表示立即调用

3.闭包

引用大佬的话:闭包 = 函数 + 环境(外层变量的引用)

//闭包 = 函数 + 环境
//func return func
func a() func() {
	str := "闭包"
	return func(){
		fmt.Println("this is a ",str)
	}
}

func main() {
r := a()
r()   
}
//再来个复杂点的
func makeSuffixFunc(suffix string) func(string) string {
	return func(name string) string {
		if !strings.HasSuffix(name,suffix) {
			return name + suffix
		}
		return name
	}
}

总结

Talk is Cheap , Show me the Code

学到的感到的都在代码和注释里了。
今天,就先写到这里吧,结构体的内容还没学完,明天再一次性发。
那么,人生苦短,朋友,Let’s GO!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值