2019年9月
-
Go代码静态检查工具golangci-lint
为什么要做代码静态检查为了保证线上服务稳定性,提升代码质量,我们需要做代码入库准入检查,同时也可以提前发现一些潜在的风险,这个时候代码静态检查工具就派上用场了,代码静态检查工具可以帮助我们发现如下问题:不符合规范的代码风格未处理的错误返回值未释放的资源(内存泄露)未初始化的变量空指针引用数组越界无效的代码行....这些问题都是我们日常查bug经常会遇到的一些问题,如果能在写代码的时候就提前发现这些风险,那么一定程度上是可以降低因为这些问题引起的bug数的。golangci-lint介绍在Golang里推荐的代码静态...
-
golang各版本官方下载地址
Go1.13 下载Microsoft WindowsWindows 7 or later, Intel 64-bit processorgo1.13.windows-amd64.msi (112MB)Apple macOSmacOS 10.11 or later, Intel 64-bit processorgo1.13.darwin-amd64.pkg (115MB)LinuxLinux 2.6.23 or later, Intel 64-bit processorgo1.13.linux-amd64.tar.g...
-
golang里如何判断一个目录是否存在?
写文件之前最好判断下目录是否存在,如果不存在则需要先创建目录,今天我们来学习golang里如何判断一个目录是否存在?使用系统自带的os包,下面直接上代码:package main import ( "fmt" "os" ) // PathExists ... func PathExists(path s...
-
golang里捕获进程信号实现优雅退出的方法
程序优雅退出可以更好的释放资源,或者打印一些重要的日志信息,在golang里可以实现捕获处理Signal信号来实现进程的优雅退出。POSIX中定义的信号POSIX.1-1990标准中定义的信号列表如下:信号值动作说明SIGHUP1Term终端控制进程结束(终端连接断开)SIGINT2Term用户发送INTR字符(Ctrl+C)触发SIGQUIT3Core用户发送QUIT字符(Ctrl+/)触发SIGILL4Core非法指令(程序错误、试图执行数据段、栈溢出等)SIGABRT6Core调用abort函数触发SIGFP...
-
Go 1.13 正式发布,看看都有哪些值得关注的特性
Go Team 一直保持着 2、8 月份发布的节奏。这次 Go 1.13 版本没能在 8 月份发布,而是在美国时间 9 月 3 日发布,delay 的原因据说主要有:Brad Fitzpatrick 老婆生二胎,休陪产假了;Module 做了很大的改进。我们先不管这些,看看这次发布的一些信息。三个链接在邮件组中,官方宣布 Go1.13 发布,依照惯例,提供了如下三个链接:https://blog.golang.org/go1.13https://golang.org/dl/ (Go 中文网下载:https...
-
CI里使用go mod管理包解决墙和私有包问题的方法(go1.13)
背景go mod是go1.11的时候推出的包的管理方法,但实际上在最新的go1.13之前我都只是尝试使用过go mod,但并未真正在生产环境使用,主要原因有两个方面:1.众所周知的墙的问题2.内部私有包如何拉取的问题对于上面第一个原因大家都会想到使用goproxy代理,确实是可以使用goproxy代理,但这样所有拉包的过程都走了代理,导致内部的一些包就无法拉取下来了,把1解决了2无法解决,2解决了1就有问题了,对于这个问题go1.13给我们带来了解决方法。go1.13里的go mod官方资料:https://git...
-
Golang里实现Http服务器并解析header参数和表单参数
在http服务里,header参数和表单参数是经常使用到的,本文主要是练习在Go语言里,如何解析Http请求的header里的参数和表单参数,具体代码如下:package server import ( "net/http" "strconv" "fmt" ) func HttpStart(port&...
-
Golang里解析TOML配置文件的方法
<span style="font-size: 20px;">TOML简介</span> TOML的全称是Tom’s Obvious, Minimal Language,因为它的作者是 GitHub联合创始人Tom Preston-Werner 。TOML的目标是成为一个有明显语义而容易去阅读的最小化配置文件格式。 TOML被设计成可以无歧义地被映射为哈希表,从而很容易的被解析成各种语言中的数据结构。TOML一些规定如下: TOML是大小写敏感的。TOML文件必须...
-
Golang里结构体struct和json互相转换的方法
Golang里对于结构体和json之间转换特别方便,使用内置的包 “encoding/json” ,简单的几行代码就可以做到。按照一个大括号里的定义就是一个结构体的规则来处理的,对于结构体定义和json里的字段名不一致的可以采用`json:"json字段名"`这种方式来指定,另外结构体定义字段名只有首字母大写才会被其他的对象访问到,符合Go语言的设计理念。下面的代码实例是实现的从配置文件里读取相关的配置转为结构体struct,然后更改内容后再存储为另一个文件。配置文件的路径通过运行传参...
-
学Go网做最全的Golang学习资料库
自从转型Golang后,深深的爱上了这个语言!现在工作中每天也都要写Go的代码,但好记性不如烂笔头,于是下决心将日常工作中的一些经验积累下来!希望这么一个网站能陪伴自己进步!17Go - 学Go网做最全的Golang学习资料库 http://www.17go.wang // hello world! <pre class="prism-highlight prism-language-go">package main import "fmt"...