Go
文章平均质量分 78
go语言学习笔记
'"<>{{7*7}}
这个作者很懒,什么都没留下…
展开
-
Go语言学习笔记:goroutine、channel
0x00 goroutinego语言协程 coroutine 的实现方式:使用go关键字注意线程切换是操作系统负责实现的,而协程调度是应用程序自己负责调度的协程是非抢占式的多任务处理,由协程主动交出控制权而线程则是抢占式的多任务处理,由操作系统控制线程的运行、就绪、阻塞,只要分给线程的时间片到了,不论线程的任务是否处理完,操作系统都可以直接将运行态的线程添加到就绪队列中正是因为协程是非抢占式的,所以协程切换时需要保存的上下文信息相比于线程更少一个线程中可以开多个协程并发执行pa原创 2021-01-10 10:35:23 · 479 阅读 · 0 评论 -
广度遍历算法:用go语言实现走迷宫
大体思路:迷宫在逻辑上就是一个四叉树,广度优先算法走迷宫,就是用广度优先算法遍历四叉树即先把1步能走到的点遍历一下,看看这些点种有没有终点,然后把两步能走到的点遍历一下...问题关键其实是确保访问顺序,如何确保顺序呢?因为由很多个点要依次访问,所以我们必须用一个队列或者用一个栈来存放这些待访问的点如果用队列(先进先出)来依次访问这些点,就是广度优先算法,如果用栈(先进后出)来依次访问这些点,就是深度优先算法即从起始点(0步点)得到所有1步能走到的点,然后把所有1步能走到的点入队列原创 2021-01-06 21:49:16 · 225 阅读 · 0 评论 -
算法与数据结构(Go语言版本)学习笔记Day02: 数组栈、数组队列,链式栈,链式队列,用栈实现深度遍历,用队列实现广度遍历
0x00 递归实现文件夹的遍历思路:写一个读取文件夹的函数:用一个函数读取文件中的所有文件和文件夹,然后遍历所有文件和文件夹,如果是文件,就存起来,如果是文件夹,就再次调用该函数。func GetAll(path string, files []string) ([]string, error) { read, err := ioutil.ReadDir(path) //读取文件夹 if err != nil { return files, errors.New("文件夹不可读取")原创 2020-12-12 10:21:45 · 349 阅读 · 0 评论 -
算法与数据结构(Go语言版本)学习笔记Day01:数组、迭代器、栈、用栈+循环模拟递归
0x00 golang 实现数组结构/* * @Author: your name * @Date: 2020-12-05 18:14:16 * @LastEditTime: 2020-12-05 22:35:10 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: /learngo/数据结构/ArrayList/ArrayList.go */package原创 2020-12-07 15:54:06 · 342 阅读 · 0 评论 -
Go语言学习笔记:第九章 测试与性能调优
0x00 测试Debugging Sucks ,Testing Rocks!传统测试:传统测试的缺点:1.测试数据和测试逻辑混在一起2.出错信息不明确3.一旦一个数据出错测试全部结束表格驱动测试:优点:分离了测试数据和测试逻辑明确的出错信息可以部分失败go语言的语法更容易去实践表格驱动测试...原创 2020-11-10 22:02:45 · 251 阅读 · 0 评论 -
Go语言学习笔记 第八章 错误处理 和资源管理
0x00 defer 调用defer 可以确保在函数返回时 语句的调用发生 参数在defer时计算,即defer fmt.Println(i) 这个i的值在defer时就已经传入给了Println ,不论defer后i怎么变,在最后执行Println这个函数时,输出的都是defer时传入给它的值 defer栈为先进后出package mainimport "fmt"func testDefer() { defer fmt.Println(1) //在函数返回之间执行该语句 defer原创 2020-11-04 15:18:16 · 269 阅读 · 0 评论 -
GO语言学习笔记:第七章 函数式编程
0x00 函数与闭包函数是一等公民:即参数,变量,返回值都可以是函数"正统的"函数式编程:不可变性:不能有变量,只有常量和函数函数只能有一个参数因为go语言是一个通用的语言,所以不完全按照”正统“的函数式编程进行闭包的底层原理:package mainimport "fmt"func adder() func(int) int { sum := 0 return func(v int) int { sum += v return sum }}f.原创 2020-11-04 15:17:57 · 259 阅读 · 0 评论 -
GO语言学习笔记:第六章 面向接口
0x00 接口的概念例如:我们现在有两个团队:infra 团队专门做基础设施 testing团队写测试环境需要的代码这两个团队都写了一个Retriever 类型,并且这个类型都具有一个Get方法testing/* * @Author: your name * @Date: 2020-10-24 14:49:57 * @LastEditTime: 2020-10-24 14:51:17 * @LastEditors: Please set LastEditors * @Descr.原创 2020-11-04 15:19:08 · 282 阅读 · 0 评论 -
Go语言学习笔记:基础语法总结
# 基本配置国内镜像配置 设置goproxy https://goproxy.cn/go env -w GO111MODULE=on 建议打开go get -v golang.org/x/tools/cmd/goimports命令行生成.mod 文件 go mod init learngo#基本语法## 定义变量package mainimport "fmt"func variableZeroValue(){ var a int var s string fmt.Pr原创 2020-09-02 07:30:39 · 787 阅读 · 0 评论