Golang中reflect反射

1. 概述 在golang中,reflect是一个比较高级的话题,本文将尽可能简单而又清楚的介绍相关内容。 本文将从如下几个方面进行阐述: 什么是reflection ? 如何检查一个变量var 并获得其真实类型 golang中的reflect包 reflect.Type 和 reflect.Value reflect.Kind… 阅读更多 »Golang中reflect反射

数据同步及锁

1. 数据同步问题 有很多情况下需要考虑线程安全问题,一个全局的变量如果有可能会被多个同时执行的线程去修改,那么对于这个变量的修改就需要有一种机制去保证值的正确性和一致性,这种机制普遍的做法就是加锁。其实也很好理解,和现实中一样,多个人同时修改一个东西,必须有一种机制来把多个人进行排队。计算机的世界中也是如此,多个线程乃至多个进… 阅读更多 »数据同步及锁

Golang数组和切片区别及切片扩容

1. 内部结构 1.1. 数组 Array 先说一下数组, 的确在 Go 语言中, 因为 slice 的存在, 使得 array 的出场率不高。但想要很好的理解 slice, 还是要先要了解 array. Go 语言的数组和其他语言一样, 没有什么特别的地方, 就是一段以元素类型(如int)为单位的连续内存空间。数组创建时, 被… 阅读更多 »Golang数组和切片区别及切片扩容

Go语言第三方包依赖的管理方式(转载)

1. 引言 笔者从今天开始正式学习golang了,肯定要跟着谷歌的节奏来,毕竟是code领域的风向标。下面谈一下入门go语言首先要弄明白的一个知识点,虽然不是太大,但是在它在学习这门语言的路上扮演着十分重要的作用。 学习go语言,入门过得都知道,go语言是以包为单位来复用代码块功能的,一般一个文件夹对应一个包,并且我们也知道,g… 阅读更多 »Go语言第三方包依赖的管理方式(转载)

Golang技巧之默认值的设置(转载)

最近使用 GRPC 发现一个设计特别好的地方,非常值得借鉴。 我们在日常写方法的时候,希望给某个字段设置一个默认值,不需要定制化的场景就不传这个参数,但是 Golang 却没有提供像 PHP、Python 这种动态语言设置方法参数默认值的能力。 低阶玩家应对默认值问题 以一个购物车举例。比如我有下面这样一个购物车的结构体,其中 … 阅读更多 »Golang技巧之默认值的设置(转载)