golang

Go

利用 go/ast 语法树做代码生成

271 0

需求概述go.uber.org/zap 日志包性能很好,但是用起来很不方便,虽然新版本添加了 global 方法,但仍然别扭:zap.S().Info()。现在我们的需求就是将 zap 的 sugaredLogger 封装成一个包,让它像 logrus 一样易用,直接调用包内函数:log.Info()。我们只需要找到`SugaredLogger这个 type 拥有的 Exported 方法,将其改为函数,函数体调用其同名方法:func Info(args ...interface{}) {_globalS

Go

golang 读写锁 sync.RWMutex

97 0

golang 读写锁 sync.RWMutex 之前的博客讲了使用互斥锁 sync.Mutex 来保证同一个时刻只有一个goroutine可以访问临界区(内部有共享变量)。当时更多时候,goroutine不是要修改共享变量,只是要读取就行,而互斥锁是完全互斥的。针对这种情况,golang中提供了读写锁 **sync.RWMutex ** ——它 不限制资源的并发读,但是读写、写写操作无法并行执行,这种锁叫作“多读单写”锁(multiple readers, single writer lock)。写操作使

Go

Ubuntu配置Golang

182 0

下载golang安装包,解压后在安装包目录下输入命令sudo cp -r ./go usr/local在home目录创建 gowork文件夹cd /home mkdir gowork cd gowork mkdir bin src pkg配置 ~/.bashrc 和 /etc/profile 在最后一行加入以下内容(发现只配置/etc/profile只在当前窗口有效,配置完成后source一下,重启确认一下):# golang setting export GOROOT=/usr/local/go exp

Go

Golang学习笔记for循环语句

41 0

title: "Golang学习笔记for循环语句" date: 2021-02-09T23:33:13+08:00 draft: true tags: ['go'] author: "dadigang" author_cn: "大地缸" personal: "http://www.real007.cn"关于作者 http://www.real007.cn/about Golang学习笔记(九)for循环语句 Golang的for相较于java,并不需要使用()括起来,基础for循环格式为for 变量赋值

Go

手撸golang 基本数据结构与算法 栈

35 0

手撸golang 基本数据结构与算法 栈 缘起 最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一) 本系列笔记拟采用golang练习之 栈 栈(也叫堆栈)也是一种数据呈线性排列的数据结构, 不过在这种结构中, 我们只能访问最新添加的数据。栈就像是一摞书, 拿到新书时我们会把它放在书堆的最上面, 取书时也只能从最上面的新书开始取。像栈这种最后添加的数据最先被取出, 即“后进先出

Go

聊聊dubbo-go-proxy的ZookeeperRegistryLoad

39 0

序本文主要研究一下dubbo-go-proxy的ZookeeperRegistryLoadLoaderdubbo-go-proxy/pkg/registry/load.go// Loader this interface defined for load services from different kinds registry, such as nacos,consul,zookeeper. type Loader interface {// LoadAllServices load all serv

Go

手撸golang 基本数据结构与算法 栈

36 0

手撸golang 基本数据结构与算法 栈缘起最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一)本系列笔记拟采用golang练习之栈栈(也叫堆栈)也是一种数据呈线性排列的数据结构, 不过在这种结构中, 我们只能访问最新添加的数据。栈就像是一摞书, 拿到新书时我们会把它放在书堆的最上面, 取书时也只能从最上面的新书开始取。像栈这种最后添加的数据最先被取出, 即“后进先出”的结构,

Go

手撸golang 基本数据结构与算法 链表

40 0

手撸golang 基本数据结构与算法 链表 缘起 最近阅读<<我的第一本算法书>>(【日】石田保辉;宫崎修一) 本系列笔记拟采用golang练习之 链表 链表是数据结构之一,其中的数据呈线性排列。 每个数据节点都有1个“指针”,它指向下一个数据的内存地址。访问数据时,我们需要从链表头部开始查找(线性查找), 如果目标数据在链表最后的话,需要的时间就是O(n)。另外,添加数据只需要更改