![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Golang
qq_37858332
这个作者很懒,什么都没留下…
展开
-
Golang panic
panic 尽量少用panic 特点停止当前函数执行一直向上返回,执行每一层的defer如果没有遇到recover,程序退出 关于recover仅在defer调用中使用获取panic的值如果无法处理,可重新panicfunc tryRecover() { defer func() { r := recover() if err, ok := r....原创 2019-08-19 21:35:05 · 113 阅读 · 0 评论 -
Golang channel
channel原创 2019-09-10 18:38:39 · 245 阅读 · 0 评论 -
Golang goroutine
协程Coroutine轻量级“线程”非抢占式多任务处理,由协程主动交出控制权编译器/解释器/虚拟机层面的多任务多个协程可以在一个或多个线程上运行func main() { var a [10]int for i := 0; i < 10; i++ { go func(i int) { for { a[i]++ } }(i) } time.Sl...原创 2019-08-20 13:48:49 · 175 阅读 · 0 评论 -
Golang 表格驱动测试
传统测试测试数据和测试逻辑混在一起出错信息不明确一旦一个数据出错测试全部结束表格驱动测试分离的测试数据和测试逻辑明确的出错信息可以部分失败go语言的语法可以让我们更容易的实践表格驱动测试tests := []struct { a, b, c int32}{ {1, 2, 3}, {0, 2, 2}, {0, 0, 0}, {-1, 1, 0}, {math....原创 2019-08-20 11:59:37 · 329 阅读 · 0 评论 -
LeetCode无重复字符的最长子串Go实现
原题链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/func lengthOfNonRepeatingSubStr(s string) int { lastOccurred := make(map[byte]int) // 使用map记录某个字符上一次出现的位置,这里的ke...原创 2019-08-18 17:26:11 · 100 阅读 · 0 评论 -
Golang 值接收者与指针接收者
什么是接收者func (接收者名字 接收者类型) 方法名() { }值接收者示例type treeNode struct { value int left, right *treeNode}func (node treeNode) print() { fmt.Print(node.value)}指针接收者示例func (node...原创 2019-08-18 19:13:07 · 171 阅读 · 0 评论 -
Golang duck typing(鸭子类型)的概念
“像鸭子走路,像鸭子叫(长得像鸭子),那么就是鸭子” 描述事物的外部行为而非内部结构 严格说go属于结构化类型系统,类似dock typing先看一个其他语言中的duck typing :python中的duck typing def download(retriever): return retriever.get("www.fabric.com") 运行时才知道传入...原创 2019-08-19 11:56:20 · 2989 阅读 · 0 评论 -
Golang 接口组合
// 实现者package faketype Retriever struct{ Contents string}func (r *Retriever) Get(url string) string { return r.Contents}func (r *Retriever) Post(url string, form map[string]string) string...原创 2019-08-19 13:58:06 · 247 阅读 · 0 评论 -
Golang 函数式编程
Golang中的函数式编程有这么几个特点函数是一等公民:参数,变量,返回值都可以是函数 高阶函数,函数的参数,返回值也是函数 函数 -> 闭包正统的函数式编程不可变性:不能有状态,只能有常量和函数 函数只能有一个参数func adder() func(int) int { sum := 0 // v是一个局部变量 return func(v int) int {...原创 2019-08-19 15:52:00 · 177 阅读 · 0 评论 -
Golang defer和错误处理
特点确保调用在函数结束时发生 内部是一个栈,后进先出,例如 defer fmt.Println(1)defer fmt.Println(2)// 会输出2 1 遇到了return、panic依然可以输出,这里的意思是说,如果defer后边有return或panic,依然会在函数的最后执行defer后边的内容,比如 func tryDefer() { defer fm...原创 2019-08-19 21:10:28 · 828 阅读 · 0 评论 -
Golang 各种格式化
/* %v 输出结构体 {10 30} %+v 输出结构体显示字段名 {one:10 tow:30} %#v 输出结构体源代码片段 main.Point{one:10, tow:30} %T 输出值的类型 main.Point %t 输出格式化布尔值 true %d`输...转载 2019-08-19 21:33:30 · 2392 阅读 · 0 评论 -
Golang GMP调度模型
解释GMP模型含义M结构是Machine,系统线程,它由操作系统管理,goroutine就是跑在M之上的;M是一个很大的结构,里面维护小对象内存cache(mcache)、当前执行的goroutine、随机数发生器等等非常多的信息P结构是Processor,处理器,它的主要用途就是用来执行goroutine,它维护了一个goroutine队列,即runqueue。Processor的让我们从...原创 2019-09-10 12:51:04 · 14107 阅读 · 0 评论