go json转换实践中遇到的坑
在使用 go 语言开发过程中,经常需要使用到 json 包来进行 json 和 struct 的互相转换,在使用过程中,遇到了一些需要额外注意的地方,记录如下。整数变浮点数问题假设有一个 Perso...
在使用 go 语言开发过程中,经常需要使用到 json 包来进行 json 和 struct 的互相转换,在使用过程中,遇到了一些需要额外注意的地方,记录如下。整数变浮点数问题假设有一个 Perso...
之前有聊过 golang 的协程,我发觉似乎还很理论,特别是在并发安全上,所以特结合网上的一些例子,来试验下go routine中 的 channel, select, context 的妙用。场景-微服务调用
我...
反射是 Go 语言的高级主题之一。我会尽可能让它变得简单易懂。本教程分为如下小节。 什么是反射? 为何需要检查变量,确定变量的类型? reflect 包 reflect.Type 和 refl...
前言在Golang中使用 for range 语句进行迭代非常的便捷,但在涉及到指针时就得小心一点了。下面的代码中定义了一个元素类型为 *int 的通道 ch :
package mainimport ( "fmt")...
前言bufio包实现了带缓冲的I/O,它封装了io.Reader和io.Writer对象,然后创建了另外一种对象(Reader或Writer)实现了相同的接口,但是增加了缓冲功能。
首先来看没有缓冲功能的Writ...
在Golang多协程的情况下使用全局map时,如果不做线程同步,会出现panic的情况。
为了解决这个问题,通常有两种方式: 第一种是最常见的使用互斥锁或者读写锁的方法; 第二种是比较...
如下所示:import ( "golang.org/x/net/html")在使用此包时,会导入失败,因为这不是go标准库中,但是由于域名被墙了所以翻墙可以下载此包,放入你的GOPATH路径下的 “golang.org/x/...
go的各种import最简单的:package main import "fmt"func main() { fmt.Println("hehe") // ok}不用说。导入的特殊用法那么, 带一个点, 是什么意思呢? 看看:package main...
之前已经go get安装了gin, 现在来玩下用go gin server作图片上传服务, 代码目录如下:taoge:~/test_gin$ tree.|-- public|-- template| `-- select_file.html`-- test_gin_se...
golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf定义示例类型和变量type Human struct {Name string}var people = Human{Name:"zhangsan"}普通占位符占位符...
Golang 错误处理最让人头疼的问题就是代码里充斥着「if err != nil」,它们破坏了代码的可读性,本文收集了几个例子,让大家明白如何优化此类问题。让我们看看 Errors are values...
从字符串载入模板
我们可以定义模板字符串,然后载入并解析渲染:template.New(tplName string).Parse(tpl string)// 从字符串模板构建tplStr := ` {{ .Name }} {{ .Age }}`//...
本文实例讲述了Go语言集成mysql驱动、调用数据库、查询数据操作。分享给大家供大家参考,具体如下:1、安装第三方mysql驱动包go get -u github.com/go-sql-driver/mysql2、连接...
看完golang的基本语法后,为了模块化编程,试用了下golang的包管理,结果真踩了几个坑,总结一下吧。一. 设置$GOPATH环境变量golang和C或php不一样,不会自动查找当前路径下的文件,必...
go module的使用非常简单初始化go.modgo mod init整理依赖包go mod tidy如果想缓存到vendor目录go mod vendor执行命令之后都会自动把依赖搞定.
但是, 如果我们是本地开发...
使用go语言读取文件的各种方式整理。一次性加载到内存中// * 整个文件读到内存,适用于文件较小的情况//每次读取固定字节//问题容易出现乱码,因为中文和中文符号不占一个字符f...
在我们编程过程中,经常会用到与时间相关的各种务需求,下面来介绍 golang 中有关时间的一些基本用法,我们从 time 的几种 type 来开始介绍。时间可分为时间点与时间段,golang 也...
Golang 有2个内置的函数 panic() 和 recover(),用以报告和捕获运行时发生的程序错误,与 error 不同,panic-recover 一般用在函数内部。一定要注意不要滥用 panic-recover,可能会...
GoLang调试工具Delve1.先获取呗:go get -u github.com/derekparker/delve/cmd/dlv2.编写测试代码呗:func main(){ http.HandleFunc("/test",func(writer http.ResponseWrite...
omitempty在go中的使用直接上代码:package mainimport ( "encoding/json" "fmt")type Person struct { Name string `json:"name"` Age int `json:"age"` Addr string...
空白符(blank identifier)空白符的产生可能是因为go不允许变量声明了但不使用。既然不想使用,何必声明变量呢,那就将变量用空白符代替,反正空白符就是用来抛弃的。我们有时候看到...
现在有这样一个问题:某函数如果正常执行,返回0,如果panic,则返回1,怎么搞呢?package main import "fmt" func test() int { defer func() { if err := recover(); err != nil {...
go for range 遍历二维数组var arry [2][3] intfor index,_ := range arry {fmt.Print(index)}运行结果: 0 1 没有遍历所有的6个元素。二维数组 arry 可以理解为:拥有两个...
Go语言要打印彩色字符与Linux终端输出彩色字符类似,以黑色背景高亮绿色字体为例:fmt.Printf("\n %c[1;40;32m%s%c[0m\n\n", 0x1B, "testPrintColor", 0x1B)其中0x1B是标记,[开...
package 的导入语法写 Go 代码的时经常用到 import 这个命令用来导入包,参考如下:import( "fmt")然后在代码里面可以通过如下的方式调用:fmt.Println( "我爱北京天安门" )fmt...