摘要:
defer 用在函数中 把它后面的语句延迟到函数即将返回的时候执行如果有多个defer语句,函数结束时会先执行后面放进去的用于关闭文件操作,关闭数据库连接,断开socket等 defer执行时间的图 1.返回值赋值 2.真正的RET返回 如果有defer,会在第1、2步之间执行 无聊的笔试题 fun 阅读全文
摘要:
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, 阅读全文
摘要:
方式一: package main import( "fmt" ) func swap(a *int, b *int) { tmp := *a *a = *b *b = tmp } func main() { a := 3 b := 4 fmt.Println(a, b) // 3, 4 swap( 阅读全文
摘要:
*和&的区别 : & 是取地址符号 , 即取得某个变量的地址 , 如 ; &a *是指针运算符 , 可以表示一个变量是指针类型 , 也可以表示一个指针变量所指向的存储单元 , 也就是这个地址所存储的值 . package main import( "fmt" ) func modify(a *int 阅读全文
|