切片传递的隐藏危机 时间: 2021-04-29 | 分类: go | 阅读: 1651 字 ~4分钟 切片传递的隐藏危机 在Go的源码库或者其他开源项目中,会发现有些函数在需要用到切片入参时,它采用是指向切片类型的指针,而非切片类型。这里未免会 阅读全文 »
一文读懂channel设计 时间: 2021-04-29 | 分类: go 面试 | 阅读: 7231 字 ~15分钟 在Go中,要理解channel,首先需要认识goroutine。 为什么会有goroutine 现代操作系统中为我们提供了三种基本的构造并发程序 阅读全文 »
Go函数调用惯例 时间: 2021-04-28 | 分类: go | 阅读: 2973 字 ~6分钟 Go函数调用惯例 本文旨在探讨Go函数中的一个问题:**为什么Go函数能支持多参数返回,而C/C++、java不行?**这其实牵涉到了一个叫做 阅读全文 »
CPU缓存体系对程序的影响 时间: 2021-04-28 | 分类: algorithm | 阅读: 6361 字 ~13分钟 CPU缓存体系对Go程序的影响 小菜刀最近在medium上阅读了一篇高赞文章《Go and CPU Caches》,其地址为https://teivah.m 阅读全文 »
Go的string与[]byte转换原理 时间: 2021-04-27 | 分类: go | 阅读: 4338 字 ~9分钟 string类型和[]byte类型是我们编程时最常使用到的数据结构。本文将探讨两者之间的转换方式,通过分析它们之间的内在联系来拨开迷雾。 两种 阅读全文 »
Go工具之vet静态诊断器 时间: 2021-04-27 | 分类: go | 阅读: 2056 字 ~5分钟 Go工具之vet——静态诊断器 go的vet工具是go代码静态诊断器,可以用以检查go项目中可通过编译但仍可能存在错误的代码,例如无法访问的代 阅读全文 »
不能忽略GoRoutinue的启动时间 时间: 2021-04-27 | 分类: go | 阅读: 2084 字 ~5分钟 不要忽略goroutine的启动时间 项目中需要将数据推给多个服务器,大致如下 package main import ( "fmt" "sync" ) func mockSendToServer(url string) { fmt.Printf("server url: %s\n", url) } func main() { urls := []string{"0.0.0.0:5000", "0.0.0.0:6000", "0.0.0.0:7000"} wg := sync.WaitGroup{} for _, url := range 阅读全文 »
深入理解sync.Once 时间: 2021-04-27 | 分类: go | 阅读: 1384 字 ~3分钟 深入理解sync.Once sync.Once是让函数方法只被调用执行一次的实现,其最常应用于单例模式之下,例如初始化系统配置、保持数据库唯一 阅读全文 »