go学习笔记
陈永坤
须知参差多态 乃是幸福的本源
展开
-
golang time.After()
1.源码分析:// After waits for the duration to elapse and then sends the current time// on the returned channel.// It is equivalent to NewTimer(d).C.// The underlying Timer is not recovered by the gar原创 2017-12-22 15:01:45 · 8432 阅读 · 1 评论 -
golang 跳出for循环
执行以下代码,发现无法跳出for循环:func SelectTest() { i := 0 for { select { case <-time.After(time.Second * time.Duration(2)): i++ if i == 5 { fmt.Println("跳出for循环") } } fmt.Println("for循环内原创 2017-12-22 15:39:55 · 26561 阅读 · 1 评论 -
golang中管道替换问题
1.运行一下代码://golang在替换通道时引起的问题func main() { var chanLength int = 18 var interval time.Duration = 1500 * time.Millisecond var chan1 chan int = make(chan int, chanLength) //该goroutine是每隔1.5秒向chan1原创 2017-12-22 17:22:08 · 712 阅读 · 0 评论 -
golang reflect
一.reflect的使用:import ( "fmt" "reflect")type Student struct { Name string Age int}func main() { var x int = 1 student := Student{Name: "zs", Age: 26} //1.reflect.TypeOf() 返回值Type类型 fmt原创 2017-12-26 15:42:35 · 325 阅读 · 0 评论 -
golang传值和传引用
1.定义:b = a;b.modify();如果b的修改不会改变a的值,那么是传值;否则,是传引用2.golang中大多数是传值的,有:基本类型:byte,int,bool,string复合类型:数组,数组切片,结构体,map,channnel3.数组:3.1 传值func main() { var array = [3]int{0, 1, 2} var arr原创 2017-12-25 16:07:38 · 7852 阅读 · 2 评论 -
golang slice 详解
一.数组切片的使用:func main() { //1.基于数组创建数组切片 var array [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} var slice = array[1:7] //array[startIndex:endIndex] 不包含endIndex //2.直接创建数组切片 slice2 := make([]i原创 2017-12-25 15:38:43 · 19003 阅读 · 4 评论 -
golang defer 详解
1.defer 是在函数退出前调用,多个defer遵循 先进后出 的原则调用;常用来做资源清理,关闭文件,解锁等操作func deferTest() { defer func() { fmt.Println("func1...") }() func() { fmt.Println("func2...") }() defer func() { fmt.Println("原创 2017-12-24 15:06:02 · 500 阅读 · 0 评论 -
golang map 详解
type PersonDB struct { Id string Name string Address string}//map是一堆键值对的未排序集合,在golang中是内置类型,可以直接使用,不像Java需要引入HashMapfunc main() { var personMap map[string]PersonDB原创 2017-12-25 10:47:18 · 5140 阅读 · 0 评论