随笔分类 - golang
有关 golang 语言相关的系列博客
摘要:1. 测试某一个包下的所有测试用例 "-v" 参数 go test -v ... 表示无论用例是否测试通过都会显示结果,不加 "-v" 表示只显示未通过的用例结果 2. 想要单独测试某一个方法测试用例 后续继续总结中......
阅读全文
摘要:常量声明: 这是个奇葩,必须是这个时间点,据说是 go 诞生之日, 记忆方法:6-1-2-3-4-5 1. 获取当前时间戳 2. 获取当前 string 时间 3. 时间戳 转 string时间格式 4. string时间 转 时间戳 这个稍微有点复杂,golang 语言中在进行此项时间转换是,如果
阅读全文
摘要:1. gofmt 命令 大部分的格式问题可以通过 gofmt 来解决,gofmt 自动格式化代码,保证所有的 go 代码与官方推荐的格式保持一致,所有格式有关问题,都以gofmt的结果为准。所以,建议在提交代码库之前先运行一下这个命令。 2. 行长 一行最长不超过80个字符,超过的使用换行展示,尽量
阅读全文
摘要:golang 性能测试包是位于 net/http 包下的 pprof,其相关介绍可以参看具体的 官方文档 有关 golang 性能测试使用特别简单,在 main 包中的引包位置直接引入: import _ "net/http/pprof" 之后,在 main 函数中增加以下代码行即可: go fun
阅读全文
摘要:真实的应用场景是:在测试收包的顺序的时候,加了个 tick 就发现丢包了 那么来看一个应用例子: 输出结果如下: 问题出在这个select里面: [tick.C 介绍说明] 当两个 case 条件都满足的时候,运行时系统会通过一个伪随机的算法决定哪个case将会被执行。所以当 tick.C 条件满足
阅读全文
摘要:golang 中的 sync 包有一个很有用的功能,就是 WaitGroup 先说说 WaitGroup 的用途:它能够一直等到所有的 goroutine 执行完成,并且阻塞主线程的执行,直到所有的 goroutine 执行完成。 WaitGroup 总共有三个方法:Add(delta int),
阅读全文
摘要:time包中包括两类时间:时间点(某一时刻)和时常(某一段时间) 1. 时间常量(时间格式化) 这些常量是在time包中进行 time 格式化 和 time 解析而预定义的一些常量,其实他们使用的都是一个特定的时间: 这个时间是 Unix time 1136239445,因为MST是 GMT-070
阅读全文
摘要:一、Golang 线程和协程的区别 备注:需要区分进程、线程(内核级线程)、协程(用户级线程)三个概念。 进程、线程 和 协程 之间概念的区别 对于 进程、线程,都是有内核进行调度,有 CPU 时间片的概念,进行 抢占式调度(有多种调度算法) 对于 协程(用户级线程),这是对内核透明的,也就是系统并
阅读全文
摘要:如何进行错误处理,这是一个Go程序员之间,特别是一些新的Go程序员,会经常讨论的问题.讨论到最后往往由于以下代码的多次出现而变成了抱怨. if err != nil { return err } 我们最近扫描了我们能找到的开源项目,这段代码只在一页或者两页中出现了一次,是不是比你想象的少很多.然而,
阅读全文
摘要:1.1 fmt vs "+" (无转义) import ( "testing" "fmt" ) var ( str = "hello gohpers!" sep = "," ) func BenchmarkFmt(b *testing.B) { for i := 0; i < b.N; i++ {
阅读全文
摘要:Golang 中读取文件大概有三种方法,分别为: 1. 通过原生态 io 包中的 read 方法进行读取 2. 通过 io/ioutil 包提供的 read 方法进行读取 3. 通过 bufio 包提供的 read 方法进行读取 下面通过代码来验证这三种方式的读取性能,并总结出我们平时应该使用的方案
阅读全文
摘要:函数 defer 1. 它的执行方式类似其他语言中的折构函数,在函数体执行结束后按照调用顺序的 相反顺序 逐个执行 2. 即使函数发生 严重错误 也会被执行,类似于 java 中 try{...} catch(){} finally{} 结构的 finally 3. 支持匿名函数的调用 4. 常用于
阅读全文
摘要:我们常常因为传入的参数不确定而头疼不已,golang 为我们提供了接入多值参数用于解决这个问题。但是一般我们直接写已知代码即所有的值都知道一个一个塞进去就好了,但是绝大部分我们是得到用户的大量输入想通过循环传入,但是这样发现无法使用这个多值参数的功能。其实底层实现将多个参数视为传入的一个不定长数组。
阅读全文
摘要:正如其他语言一样,在 linux 系统上通过传入不同的参数来使得代码执行不同逻辑实现不同功能,这样的优点就是执行想要的既定逻辑而不需要修改代码重新编译与打包。在 Golang 语言中也为我们提供了相应的功能,直接上代码,在代码中会做详细的解释,当前运行环境为:Go-1.8.1
阅读全文
摘要:有过 JAVA 语言学习经历的朋友都知道,面向对象主要包括了三个基本特征:封装、继承和多态。封装,就是指运行的数据和函数绑定在一起,JAVA 中主要是通过 super 指针来完成的;继承,就是指 class 之间可以相互继承属性和函数;多态,主要就是用统一的接口来处理通用的逻辑,每个 class 只
阅读全文
摘要:1. golang 中 json 转 struct <1. 使用 json.Unmarshal 时,结构体的每一项必须是导出项(import field)。也就是说结构体的 key 对应的首字母必须为大写。请看下面的例子: 输出的结果如下: 从结果可以看出,json 数据并没有写入 Person 结
阅读全文
摘要:1. go语言从键盘获取输入内容 <1. 最简单的办法是使用 fmt 包提供的 Scan 和 Sscan 开头的函数。请看以下程序: 键盘输入:liang yongxing,输出结果如下所示: Scanln 扫描来自标准输入的文本,将空格分隔的值依次存放到后续的参数内,直到碰到换行。Scanf 与其
阅读全文
摘要:概述 常用的命令行参数解析有 2 种方式,一种是不带参数标签直接接上参数值,另外一种就是带有标签的参数解析。第一种我们可以直接通过 os 包提供的原始方法获取,第二种我们需要通过 flag 包来解析获得。 不带标签参数解析 先看以下源码案例: 打开终端找到你对应编写的这个类通过go命令运行,这里我的
阅读全文
摘要:1.下载安装 下载当前最新版本,通过wget命令,当然你也可以手动下载之后再传入到Linux中,都可以。 本文安装的是1.8版本。由于Go语言的要求,需要配置gopath,而对应再gopath里按照go语言开发习惯,需要有3个包分别为:bin、pkg、src,这样你在编译运行go程序的时候才不会有警
阅读全文
摘要:Mac下的MySql安装与配置 1. 访问MySQL的官网 http://www.mysql.com/downloads/ 然后在页面中会看到“MySQL Community Server”下方有一个“download”点击。 2. 进入MySQL的下载界面(http://www.mysql.com
阅读全文

浙公网安备 33010602011771号