henryspace

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

Part 25 - Go 语言学习 - 广度优先算法走迷宫

广度优先算法迷宫数据设有一个 6 行 5 列的迷宫,从左上角出发到达右下角,只能横向或纵向走,1 为墙,0 为出路,问如何走出去 65010000001001010111000100101000 代码示例 packagemainimport("fmt""os")//从文件中读出迷宫 funcreadMaze(filenamestring)[][]int{file,err:=os.Open(filename)iferr!

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