
Golang
杨澄
查拉图斯特拉不再对群众说话,而只对伙伴说话
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
理解golang调度器
go设计文档, 可扩展的 go调度器05/02/2012 Dmitry Vyukov dvyukov@google.com学习go runtime 包的过程中看了一些调度器的资料,翻译一下加强记忆。本文写在 2012年,是谷歌内部的go语言设计文档,之前的go 还在 v1.0时代,使用的是GM模型,GC 的STW时间在百ms级别。本文也是 Processor这个概念引入的时刻。现...原创 2020-03-08 22:44:38 · 358 阅读 · 0 评论 -
一个例子搞懂golang指针接收者和值接收者
接收者有两种,一种是值接收者,一种是指针接收者。顾名思义,值接收者,是接收者的类型是一个值,是一个副本,方法内部无法对其真正的接收者做更改;指针接收者,接收者的类型是一个指针,是接收者的引用,对这个引用的修改之间影响真正的接收者。package maintype foo struct { val int}// 需要改变成员变量的都定义为指针接收者func (f *foo) chang...原创 2018-11-27 23:38:59 · 3401 阅读 · 3 评论 -
golang 闭包使用详解
golang 闭包使用详解对GO闭包的特性,用法, 还有其中的坑做一些归纳闭包的概念闭包= 函数行为 + 环境数据, 最简单的例子var a = 1 // globalfunc test(){a = 12}函数 test 访问了它作用域之外的变量,这就是闭包。go 官方文档里对闭包的解释是Go supports anonymous functions, which can...原创 2019-03-14 12:26:55 · 458 阅读 · 0 评论 -
goLang中数组-切片-map等值的传递方式
新手常常被golang中的值传递和指针传递而搞的很困惑。这里总结一下,其实只要把握两点。golang默认都是采用值传递,即拷贝传递有些值天生就是是指针值传递和引用传递最简单的传进去一个字符串func changeAString(s string){ s = "new string" }func main(){ var a = "string" changeAStrin...原创 2019-04-04 00:32:22 · 1980 阅读 · 0 评论 -
go内存模型和channel 探究
在多个线程对同一个变量进行了读写操作的时候,由于不同的goroutine的执行顺讯不能确定,通常会带来不可预测的后果。要保证程序的并发安全,需要使用锁机制。go内存模型确定了在何种条件下一个goroutine中的read操作可以观测到另一个goroutine中的write操作。对于在不同的goroutine中操作的数据应该用channel保护起来,或者用其他同步机制,比如sync或者sync/...原创 2019-04-01 21:26:51 · 294 阅读 · 0 评论 -
修复使用Go module后vscode 智能提示不能用的问题
在升级到 1.11后, go加入了go module这一特性, 支持相对路径的导入包,这样在$GOPATH之外的地方也可以进行项目开发。但是vscode中很多插件只能工作在 $GOPATH下, 其中最重要的代码智能提示也是如此代码提示主要由 github.com/mdemsky/gocode 这个模块负责, 为了支持go module, 要使用新的gocode模块,项目地址为 github.c...原创 2019-09-03 14:03:54 · 8938 阅读 · 2 评论