henryspace

记录精彩的程序人生 开始使用

Go 0 篇文章

Part 22 - Go 语言学习 - channel

channelchannel 使用示例 packagemainimport("fmt""time")funcchanDemo(){//channel 是 goroutine 和 goroutine 之间的一个交互//varcchanint//这里通过 var 定义的,值是 nil,并没有创建一个 channel,没法用//定义 channel 用 makec:=make(chanint)fmt.Println(c)//可以看到

Part 21 - Go 语言学习 - 并发编程

并发编程 goroutinefori:=0;i<10;i++{//并发 go 关键字 gofunc(iint){for{fmt.Printf("Hellofromgoroutine%d\n",i)}}(i)}time.Sleep(time.Millisecond)协程 Coroutine 轻量级“线程”非抢占式多任务处理,由协程主动交出控制权编译器、解释器、虚拟机层面的多任务多个协程可能在一个或多个线程上运行 v

Part 20 - Go 语言学习 - 错误处理

错误处理 panic()函数,直接终止程序执行停止当前函数执行一直向上返回,执行每一层的 defer,相当于其他语言的 throw 如果没有遇见 recover,程序退出 fmt.Println();return 通过 return 结束执行 errinterfacefuncwriteFile(filenamestring){file,err:=os.OpenFile(filename,os.O_EXCL|os.O_C

Part 19 - Go 语言学习 - 资源释放 defer 调用

资源释放 defer 调用 defer 确保资源销毁时执行,是个栈操作,先入后出 packagemainimport"fmt"functryDefer(){//defer 确保调用在函数结束时发生,是个栈操作,先入后出 deferfmt.Println(1)deferfmt.Println(2)fmt.Println(3)}funcmain(){tryDefer()}//输出 321 参数在 defer 语句时计算 def

Part 18 - Go 语言学习 - 函数与闭包

函数与闭包 1.函数式编程 vs 函数指针函数是一等公民:参数,变量,返回值都可以是函数高阶函数(函数的参数可以是函数)函数-> 闭包“正统”函数式编程不可变性:不能有状态,只有常量和函数函数只能有一个参数 go 语言不做上述严格规定 import"fmt"//闭包函数,返回值是一个闭包,返回一个对自身的调用 funcadder()func(int)int{sum:=0returnfunc(vint)int{sum

Part 16 - Go 语言学习 - 接口的值类型

接口的值类型接口变量实现者的类型实现者的指针-> 实现者接口变量自带指针接口变量同样采用值传递,几乎不需要使用接口的指针指针接收者实现智能以指针方式使用;值接收者都可查看接口变量表示任何类型:interface{}TypeAssertion(类型断言)TypeSwitch(case 类型判断)packageutil//支持任何类型 typeQueue[]interface{}func(q*Queue)Pu