摘要:
先看看panic是干什么的 执行到panic的地方,会出现异常。后面的代码不会执行,加了defer,panic之前会执行defer,加了recover会修复后继续执行 defer要在可能引发panic之前定义 recover()必须搭配defer使用 import ( "fmt" ) func f1 阅读全文
摘要:
先看看panic是干什么的 执行到panic的地方,会出现异常。后面的代码不会执行,加了defer,panic之前会执行defer,加了recover会修复后继续执行 defer要在可能引发panic之前定义 recover()必须搭配defer使用 import ( "fmt" ) func f1 阅读全文
摘要:
函数本身可作为参数和返回值(高阶函数) 函数也可以作为参数,传给别的函数,函数也可以作为返回值,那函数是什么类型呢? 确定函数类型的目的是写在参数和返回值里: func f1 ( f func() ) func() int{ ... } 无参数无返回值: func()无参数返回int: func() 阅读全文
摘要:
defer 用在函数中 把它后面的语句延迟到函数即将返回的时候执行如果有多个defer语句,函数结束时会先执行后面放进去的用于关闭文件操作,关闭数据库连接,断开socket等 defer执行时间的图 1.返回值赋值 2.真正的RET返回 如果有defer,会在第1、2步之间执行 无聊的笔试题 fun 阅读全文
摘要:
函数可以有多个参数,可以没有参数函数可以有多个返回值,可以没有返回值Go语言中参数没有默认值这个概念 常用写法: func sum(x int, y int)(int, int) { ...} 特殊写法: func f1(x, y, z int, m, n string) a int { ...} 阅读全文
摘要:
func countHans(s string) int { var count int = 0 for _, v := range s { isHans := unicode.Is( unicode.Han,v) if isHans { count ++ } } return count } 阅读全文
摘要:
map特点: map是无序的基于key-value的数据结构。map是引用类型,其内部使用散列表(hash)实现 必须初始化才能使用 map操作: var m1 map[string]int //声明:key为string类型,值为int类型 m1 = make(map[string]int, 10 阅读全文
摘要:
//切片申请内存s1 := make([]int, 5, 10) //map申请内存m1 = make(map[string]int, 10)//指针申请内存var a = new(int) //a为0x342112910 makemake也是用于内存分配的,区别于new,它只用于slice、map 阅读全文
摘要:
指针Go语言中没有指针的运算,只需要记住两个符号:"*"和"&" var a *int //指针为nil*a = 100 //报错 var a = new(int) //通过new关键字申请一块内存,指针有值,指向的值为初始值*a = 100 //ok 阅读全文
摘要:
切片的本质: 切片是一个引用类型,是基于数组类型做的一层封装,内部结构包含头部指针、长度、容量。 形象把切片理解一个“框” ,框住数组或map的一部分,只能框连续的元素,底层数组改了,切片也改了,切片可以再切片 切片长度 len(slice) 是切片框住的元素个数;切片的容量 cap(slice) 阅读全文
摘要:
数组的初始化: var a1 [3]bool // {false, false, false} a1 = [3]bool{true, true, true} 或者 a1 := [3]bool{true, true, true} 或者 a1 := [...]int{1,3,45,6,34,1,5,7, 阅读全文
|