17. Go
玄苦大师233
机会往往是长期准备和酝酿的而不能只靠一时的主动与激情所以认真写好技术博客吧
新博客 =》https://chenguolin.github.io/
展开
-
【Go】Golang Sync包
一. 前言Golang sync包提供了基础的异步操作方法,包括互斥锁Mutex,执行一次Once和并发等待组WaitGroup。本文主要介绍sync包提供的这些功能的基本使用方法。Mutex: 互斥锁RWMutex:读写锁WaitGroup:并发等待组Once:执行一次Cond:信号量Pool:临时对象池Map:自带锁的map二. sync.Mutexsync.Mute...原创 2019-05-30 09:24:29 · 4018 阅读 · 0 评论 -
【Go】Golint代码规范检测
一. Golint介绍Golint is a linter for Go source code.Golint 是一个源码检测工具用于检测代码规范Golint 不同于gofmt, Gofmt用于代码格式化Golint会对代码做以下几个方面检查package注释 必须按照 “Package xxx 开头”package命名 不能有大写字母、下划线等特殊字符struct、inter...原创 2019-05-29 09:34:50 · 27380 阅读 · 2 评论 -
【Go】Gin Web 服务框架
一. GinGin是Golang的一个web框架,封装优雅API友好,源码注释比较明确。借助Gin框架开发web服务,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。详细参考Github项目地址 https://github.com/gin-gonic/gin安装Gin go get -u github.com/gin-gonic/gin使用Gin import ...原创 2019-05-29 09:34:07 · 1246 阅读 · 0 评论 -
【Go】dep使用介绍
一. 简介依赖管理一直以来都是大型项目开发所面临的一个问题,成熟的编程语言都会有对应的一个甚至多个依赖管理工具。例如**C++**项目通常会使用Make、Scons等来管理依赖的so,Java项目通常会使用Maven来管理依赖包。Golang项目同样也需要有类似工具来管理对应的依赖包。dep是Golang官方依赖管理工具,目前只支持Golang 1.9以上的版本。① go getGola...原创 2019-05-29 09:32:58 · 3244 阅读 · 0 评论 -
【Go】Goroutine和Panic
一. GoroutineGoroutine是Golang2个核心的设计之一,Goroutine在Golang里面指的是协程。我们知道线程属于系统层面,通常来说创建一个新的线程会消耗较多的资源且管理不易。而Goroutine就像轻量级的线程,但我们称其为协程,一个Go程序可以运行超过数万个Goroutine,并且这些性能都是原生级的,随时都能够关闭、结束。在内置的官方包中也不时能够看见Gorou...原创 2019-05-29 09:31:12 · 4527 阅读 · 0 评论 -
【Go】Go语言编码规范
一. Gofmt必须使用Gofmt做代码格式化和自动优化如果使用Goland IDE开发可以选择goimports, goimports包含了Gofmt的功能同时还支持自动添加和删除package导入功能Goland -> Preferences -> File Watchers -> 添加goimports二. Comment Sentences每个Go文件头部...原创 2019-05-29 09:30:32 · 2038 阅读 · 0 评论 -
【Go】Go语言基础
Go语言string/byte/rune区别string底层是用byte数组存储的,并且是不可改变的例如s := “Go编程” len(s) = 8,因为Unicode中文字符占3个字节len(string(rune(“编"))) 结果是3,说明string中有Unicode中文字符用3byte存储len([]rune(“Go编程”)) 结果是4,rune可以切片,并不是按照Unic...原创 2019-05-29 09:29:55 · 396 阅读 · 0 评论 -
【Go】Go垃圾回收算法
一. 什么是垃圾回收曾几何时,内存管理是程序员开发应用的一大难题。传统的系统级编程语言(主要指C/C++)中,程序员必须对内存小心的进行管理操作,控制内存的申请及释放。稍有不慎,就可能产生内存泄露问题,这种问题不易发现并且难以定位,一直成为困扰开发者的噩梦。如何解决这个头疼的问题呢?过去一般采用两种办法:内存泄露检测工具。这种工具的原理一般是静态代码扫描,通过扫描程序检测可能出现内存泄露的...原创 2019-05-29 09:29:25 · 1097 阅读 · 1 评论 -
【Go】Golang Channel介绍
一. Channel简介Channel 是Golang的2大核心之一,类似Linux的管道,为并发Goroutine提供一种同步通信机制,借助于Channel不同的Goroutine之间可以相互通信。创建channel: make(chan type) type表示具体数据类型,除了支持常规的int、float64、string等类型外,还支持struct、interface等ch1 := ...原创 2019-05-30 09:25:25 · 1244 阅读 · 0 评论 -
【Go】Go语言最佳实践建议
一. 介绍每种语言都会有基本的语言规范,本文将会介绍Go语言实战建议 Practical Go: Real world advice for writing maintainable Go programs二. 指导原则Go语言有以下3点基本指导原则简单性: 简单性是Go语言的最高目标,无论我们编写什么程序,我们都应该同意这一点它们很简单。很多情况下我们都害怕遇到一个问题就是 我不懂这段...原创 2019-05-30 09:23:09 · 1181 阅读 · 1 评论