Golang判断文件是否存在及递归创建文件夹

一、判断文件或文件夹是否存在 golang判断文件或者文件夹是否存在可以通过os.stat()方法和os.IsExist()方法来判断: 二、递归创建文件夹 递归文件夹用到os.MkdirAll()方法: 第一个参数是路径,第二个是权限。如果文件夹不存在就创建,存在则不做任何操作。 三、测试代码 在...
阅读全文

Golang中time.Parse和time.Format的时区问题

一、问题描述 在windows下,time.Parse()的时区和time.Format()的时区是一致的。 但是在linux环境下,time.Parse()的默认时区是UTC,time.Format()的时区默认是本地,两者如果不处理好就会导致错误。 输出: 很明显能看到两者的时区不同并且如果把两...
阅读全文

Golang defer的运行时机和遇到的坑

一、defer概述 defer是golang中独有的流程控制语句,用于延迟指定语句的运行时机,只能运行于函数的内部,且当他所属函数运行完之后它才会被调用。例如: 它会先打印出HelloWorld,然后再打印出HelloDefer。 一个函数中如果有多个defer,运行顺序和函数中的调用顺序相反,因为...
阅读全文

Golang redigo使用笔记(二):并发处理和连接池

一、并发问题 在redigo官方的文档描述中,Receive()方法是不支持多并发的,原文为: 而Do()方法是间接调用了Receive()方法,所以Do()方法也是不支持多并发的。我们可以用一段代码来验证这一点: 这里是一个函数,完成了一个简单的INCRBY命令,实现nKey + i功能,和正常情...
阅读全文

golang向上取整、向下取整和四舍五入

一、概述 官方的math 包中提供了取整的方法,向上取整math.Ceil(),向下取整math.Floor() 二、用法 要注意的是,取完整后返回的并不是真正的整数,而是float64 类型,所以如果需要int 类型的话需要手动转换。 2017-10-14追加:一个奇葩的四舍五入方法 golang...
阅读全文

golang生成伪随机数

一、概述 golang生成随机数可以使用系统自带的math/rand 包。 二、使用方法 这种情况下产生的随机数都是相同的,如果需要不同的随机数需要这样: 或者  
阅读全文
godoc的web版本开启方式 Golang

godoc的web版本开启方式

一、摘要 godoc是go默认自带的一个模块,提供了go语言的文档相关信息,一般情况下查询文档可以使用godoc **来进行查询。 例如godoc fmt,就会出现fmt 包相关的信息: 二、WEB版文档 其实对大部分人来说,命令行界面看起来都是不友好的,满屏的黑屏白字就算是程序员也是会有抵触心理。...
阅读全文
linux安装Go1.9.2 Golang

linux安装Go1.9.2

一、概述 使用golang这么久了,到今天才发现还没有在linux上使用安装过,之前要么是在windows上安装,要么就是linux直接使用yum安装,都没有直接从源码装过,今天决定探索一番。 二、步骤 1、下载安装包 官方下载地址:https://golang.org/dl 依次是windwos ...
阅读全文
Golang的socket编程(四):解决粘包问题及制定通信协议 Golang

Golang的socket编程(四):解决粘包问题及制定通信协议

一、概述 前面已经完成了一个完美的多并发CS模型,但美中不足的是没有解决粘包问题。 1.1 什么是粘包问题? 在网络传输中,数据都是通过数据流来传输的,也就是以比特来传输。传输的过程中我们可能会遇到各种各样的问题导致数据传输异常,最常见的就是网络发送时延。网络时延会导致服务端此时收到的数据的时间有偏...
阅读全文