分类 Golang 中的文章

Go语言环境搭建详解(2020版)

最近写了很多Go语言的原创文章,其中Go语言实战系列30篇,近15W字,还有最近更新的Go经典库系列,不过通过大家的咨询来看,还是想要一些入门的知识,这一篇文章写于2017年初,这3年多Go更新了很多版本,所以需要更新下这篇文章。 提示:本文基于Go语言最新版 go1.15.3 写成。 有读者来信(微……

阅读全文

Go语言 | 几种常用的排序算法图文解析

作为一个小项目,我已经使用Go编写了一些著名的排序算法。希望对你有用! 冒泡排序 冒泡排序是一种非常容易遵循的算法。你需要遍历数组中的每个元素,以查看它是否更大,如果需要,则需要交换它们。你应该多次执行此任务,最终将不需要任何交换操作,也就是完成了排序。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15……

阅读全文

Go语言|go version命令的高级用法

go version这个命令相信大家已经非常熟悉了,使用它可以查看我们自己电脑上的Go SDK版本。 1 2 $ go version go version go1.15 darwin/amd64 以上就是我们经常使用到的功能,可以查看自己的Go版本和系统架构的信息。 但是这其实是go version最基本的用法,因为我们没有为它提供更多的参数信息,所以它默认的打印的……

阅读全文

Go语言|基于channel实现的并发安全的字节池

字节切片[]byte是我们在编码中经常使用到的,比如要读取文件的内容,或者从io.Reader获取数据等,都需要[]byte做缓冲。 1 2 func ReadFull(r Reader, buf []byte) (n int, err error) func (f *File) Read(b []byte) (n int, err error) 以上是两个使用到[]byte作为缓冲区的方法。那么现在问题来了,如果对于以上方法我们有大量的调用,那么就要声……

阅读全文

不考虑用户体验的编程语言都是耍流氓

其实这篇文章应该还可以有个副标题—为什么选择Go语言。很多时候,我们在做一个需求的时候,很多编程语言都可以,但是为什么选择这个,而不是那个,甚至说为什么选择Go语言,而不是其他编程语言?今天我抛开特定业务只能选择某种特定的编程语言除外,对比下有多种语言选择的情况下,G……

阅读全文

Go语言 | 从并发模式看channel使用技巧

最近重看MinIO的源代码,发现纠删码模式下读取数据盘的时候,使用了更简单的并发读取方式,以前看的时候没发现,查了下Git历史记录,发现是19年新改的,新的使用channel做标记的方式的确非常巧妙,简化了代码逻辑,值得我们学习。所以今天就开篇文章,介绍下channel在并发下的……

阅读全文

Go语言 | 你还在这样获取文件的大小吗?

在项目中,我们可能会需要获取一个文件的大小,在Golang(Go语言)中,有很多方法来获取一个文件的大小,看看你是否还在用最慢的方式。 Read字节方式 第一种,是最直观会想到的,也就是打开文件,把文件读取一遍。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 func main() { file,err:=os.Open("water") if err ==nil { sum := 0 buf:=make([]byte,2014) for { n,err:=file.Read(buf) sum+=n if err==io.EOF { break }……

阅读全文

Golang Gin 实战(十三)| 中间件详解看这一篇就够了

在Gin的整个实现中,中间件可谓是Gin的精髓。一个个中间件组成一条中间件链,对HTTP Request请求进行拦截处理,实现了代码的解耦和分离,并且中间件之间相互不用感知到,每个中间件只需要处理自己需要处理的事情即可。今天我们就通过这篇文章,详细的介绍Gin中间的使用和原理。 通过……

阅读全文

Golang Gin 实战(十二)| ProtoBuf 使用和源码分析原理实现

ProtoBuf最近几年也算比较流行,它是一种语言无关,平台无关,并且可以扩展,并结构数据序列化的方法。相比JSON/XML这类文本格式的,ProtoBuf是二进制的,更快更高效。对于这么好的特性,Gin当然是支持的。 通过这篇文章你可以学到: ProtoBuf数据结构 ProtoBu……

阅读全文

最近文章

分类

标签

其它