一看就懂系列之Golang学习
文章平均质量分 84
从基础说起,一步一步记录本人学习和实战的路径,很偏实战的Golang小笔记。(大神请绕道)
咖啡色的羊驼
我愿望是世界和平
展开
-
一看就懂系列之Golang的Map如何做到最省空间?
前言今天在看源码的时候,发现一个东西,“空间”和“时间”一直是对立的,那么在“空间换时间”的时候,通常使用的是map中的key来快速判断,很多时候其value是用不到的。那么问题来了,既然很多时候value用不到,那么怎么写才是最节省空间的?正文说实话,我没有直接想到这个问题的答案。不过我查到了。struct{} 的巧妙使用当声明为map[int]struct{},由于stru...原创 2019-12-01 17:17:59 · 1534 阅读 · 3 评论 -
由浅入深聊聊Golang的sync.Map
前言今天在技术群中有小伙伴讨论并发安全的东西,其实之前就有写过map相关文章:由浅入深聊聊Golang的map。但是没有详细说明sync.Map是怎么一回事。回想了一下,竟然脑中只剩下“两个map、一个只读一个读写,xxxxx”等,关键词。有印象能扯,但是有点乱,还是写一遍简单记录一下吧。1.为什么需要sync.Map?2.sync.Map如何使用?3.理一理sync.Map源码实现?...原创 2019-07-21 01:22:34 · 15559 阅读 · 5 评论 -
一看就懂系列之Golang的String
前言今天在写代码的时候,遍历Golang中的字符串时候,发现竟然和想象中不同,从而认真研究了一下,做个记录与string做一给了断,这是一篇实战贴。你将知道一下知识点:1.字符串的组成?2.如何遍历字符串?3.如何将字符串与整型互转?4.如何改变其中某个字符?5.如何截取字符串?6.如何计算长度?7.如何连接字符串?正文1.字符串的组成?Golang的字符串都是由单个字节连...原创 2019-02-24 16:36:58 · 811 阅读 · 0 评论 -
Golang优化之内存对齐
前文话说今天在用uintptr进行指针运算的时候,突然想起来有个内存对齐的东西,那么对这个uintptr计算是否会有影响?带着疑问,开始吧。你将获得以下知识点:1.什么是内存对齐?2.为什么需要内存对齐?3.如何进行内存对齐?4.golang的内存对齐如何体现?5.如何利用内存对齐来优化golang?正文1.什么是内存对齐?在想象中内存应该是一个一个独立的字节组成的。像这样:...原创 2018-12-18 03:57:12 · 3853 阅读 · 8 评论 -
如何判断Golang接口是否实现?
前言在看一个底层库的的时候,看到了一个比较奇怪的写法,于是乎有了本文。主要探讨两个问题:1.利用编译来判断Golang接口是否实现2.延伸出的make和new的区别正文1.利用编译来判断Golang接口是否实现看了一个底层通用链接池的库,有这么一行代码:var _ Pooler = new(WeightedRoundRobin)需要解释的是:Pooler是一个接口类型。typ...原创 2018-10-27 14:45:07 · 8991 阅读 · 1 评论 -
由浅入深聊聊Golang的context
前言正文原创 2018-10-07 01:49:13 · 24265 阅读 · 6 评论 -
由浅入深聊聊Golang的slice
前言今天本来想去外地玩耍,结果睡过头错过了动车,只好总结一下slice,希望能与slice之间做一个了断。文章由浅入深,遵从能用代码说话就不bb的原则。正文1.基本操作1.1 声明var stringSlice []stringstringSlice := []string{"咖啡色的羊驼"}var intSlice []int64intSlice := []int{18}...原创 2018-10-04 20:04:09 · 940 阅读 · 4 评论 -
由浅入深聊聊Golang的map
前言今日听了大佬们对于map的讲解,结合自己之前的积累,专门来由浅入深的总结一下,希望可以与map之间做一个了断。文章的深浅顺序是递进的,当你看完这篇文章,你也基本掌握了map的99%的知识点了,可以装逼和吹牛逼了。正文1.map的基本使用1.1声明 & 默认值// 声明var m map[string]stringmap的声明的时候默认值是nil ,此时进行取值,返回的...原创 2018-10-04 00:32:51 · 26808 阅读 · 9 评论 -
由浅入深聊聊Golang中select的实现机制
正文话说今天在玩select的时候发现一个问题,是这样的:片段1:func main(){ var count int for { select { case <-time.Tick(time.Millisecond * 500): fmt.Println("咖啡色的羊驼")原创 2018-08-31 01:40:42 · 18764 阅读 · 7 评论 -
一看就懂系列之Golang的测试
前言10s后以下知识点即将靠近: 1.为什么需要测试? 2.Golang的测试规矩 3.功能测试 4.压力测试 5.测试代码的覆盖率测试 6.测试框架正文原创 2018-07-30 01:15:27 · 21195 阅读 · 1 评论 -
一看就懂系列之Golang的反射
前言10s后,以下知识点即将靠近: 1.反射的简介 2.为什么使用反射? 3.反射的实现 4.反射具体能做什么?https://www.jianshu.com/p/53adb1e92710正文1.反射的简介Golang提供了一种机制,在编译时不知道类型的情况下,可更新变量、运行时查看值、调用方法以及直接对他们的布局进行操作的机制,称为反射。2.为什么使用反射...原创 2018-07-29 09:35:42 · 29886 阅读 · 7 评论 -
一看就懂系列之Golang的goroutine和通道
前言10s后,以下知识点即将靠近:1.从并发模型说起 2.goroutine的简介 3.goroutine的使用姿势 4.通道(channel)的简介 5.重要的四种通道使用 6.goroutine死锁与处理 7.select的多路复用 8.select死锁正文1.从并发模型说起看过很多大神简介,各种研究高并发,那么就通俗的说下并发。 并发目前来看比较主流的...原创 2018-07-24 08:04:03 · 31103 阅读 · 16 评论 -
一看就懂系列之Golang的接口
前言接口在面向对象编程中是经常使用的招式,也是体现多态很重要的手段。 是的。Golang中也有接口这玩意儿。本文将以通俗易懂的方式,走一波Golang的接口。10s后,以下知识点即将到达战场: 1.接口是什么?如何定义? 2.为什么需要接口? 3.接口实战初体验 4.如何测试是否已实现该接口? 5.接口零值 6.空接口&类型断言&switch判断 7.一...原创 2018-07-22 03:12:02 · 41489 阅读 · 8 评论 -
一看就懂系列之Golang的方法
前言在Go里头是没有类的概念的,但是Go一样实现了同样的效果。 本文主要通过Go和PHP的对比来做笔记,致力于”一篇讲清楚go方法”,对于说phper的同学,看完印象会更深刻。即将get到以下知识小点: 1.Go的方法 vs PHP的类 2.Go的继承 vs PHP的继承 3.重载?重写? 4.指针接收者的方法 5.封装&访问权限说明正文1.Go的方法 vs...原创 2018-07-20 02:33:34 · 4538 阅读 · 0 评论 -
一看就懂系列之Golang准备
前言开始学习之前要做的一些准备: 1.golang的简历 2.本地开发环境的搭建 3.编辑器的选择 4.推荐的书籍正文golang的简历golang的背景和背影都很多,简单一句话介绍: ··· 123123123123 ···...原创 2018-07-16 01:50:16 · 4118 阅读 · 0 评论 -
咖啡色的羊驼学习Golang
前言四年前便与golang结缘,学了一波由于没有应用场景便雪藏了,前几个月重新开始学习,此篇用于自己的总结备忘录。正文[先写标题,先留坑日后再填]1.golang基础操作总结...原创 2018-07-16 00:24:03 · 2157 阅读 · 2 评论