GO
文章平均质量分 68
PrnyNing
ROR web开发,GOpher rookie
展开
-
go1.13 中 errors 包的 Is 与 As 方法
虽说现在都已经 go 1.14 了,才想起来写一下 go 1.13 中引入的 error 的处理方法。先放 go blog 中的链接: go1.13-errors这篇博文主要阐述了之前关于 error 类型处理的方法,我们经常会在处理 error 的时候需要添加一些有用的上下文信息,之前常用的做法是使用 github.com/pkg/errors 这个包里的 errors.WithMessag...原创 2020-02-28 21:01:35 · 12523 阅读 · 2 评论 -
Golang go-redis 包 client 返回 EOF
先叙述一下遇到的问题,一个 web 后台验证用户登录信息,通过 Redis 取 token 来获取 user ID。结果发现页面上过不了多久就有前端请求返回 401 unauthorized 的错误,但是并不会跳回登录页面,检查 session 正常。查看日志发现是通过 Redis 取 token 这一步返回 EOF 的 error。接下来就是各种 google,看到底是为什么会有这个错误。一...原创 2019-12-18 10:46:24 · 5835 阅读 · 0 评论 -
Go语言中关于切片容量与其底层指针的思考
Go语言中的切片是常用的一种数据类型,其中切片的底层是数组,切片常用的属性有长度和容量。其中长度很容易理解,但是容量相对复杂一些。切片提供了计算容量的函数 cap() 可以测量切片最长可以达到多少:它等于切片的长度 + 数组除切片之外的长度。以下有几个实例,第一:slice := []int{10, 20, 30, 40, 50}newSlice := slice[1:3]t...原创 2018-08-09 23:28:23 · 432 阅读 · 3 评论 -
对照 Ruby 学 Go (Part 8): Go, Ruby与Elixir中并发的比较
转载自: http://zonov.me/go-for-rubyists-part-8-concurrency-ruby-go-elixir/ 已获原作者授权原标题: Go for Rubyists. Part 8. Concurrency in Go, Ruby and Elixir Hey folks, hope you had a great weekend and it’s t...转载 2018-08-01 12:50:58 · 702 阅读 · 0 评论 -
Golang 在 Mac、Linux、Windows 下如何交叉编译
本文转自:https://blog.csdn.net/panshiqu/article/details/53788067 原作者 磐石区Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。Mac 下编译 Linux 和 Windows 64位可执行程序CGO_ENABLED=0 GOOS=linux GOARCH=amd64 g...转载 2018-08-17 15:55:18 · 854 阅读 · 0 评论 -
GO语言格式化输出占位符
golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。设有# 定义示例类型和变量type Human struct { Name string}var people = Human{Name:"zhangsan"}普通占位符占位符 说明 举例 ...原创 2018-10-17 18:02:14 · 2612 阅读 · 0 评论 -
goland使用dlv调试本地"远程"项目
利用GoLand中的debug功能里的go remote一项,可以调试一个指定的host:port的项目。由此我们可以联想到,很多情况下项目并没有一个像简单的application给你debug的情况,那么我们就可以利用go remote调试启动的完整项目。需要先安装dlv,安装文档如下delve安装另外也可以去看一下阿里云社区的文档详细介绍delve的使用使用Delve进行...原创 2019-04-04 19:43:23 · 8335 阅读 · 6 评论 -
Goland中利用HTTPClient发送请求超时返回EOF错误DEBUG
今天解决了一个疑难杂症,起因是之前代理某内部API接口,请求先是出现卡顿,超时后报EOF错误。但奇怪的是线上测试环境确是没问题的。Google了一下,有人说可能是由于重复请求次数过多导致,应该设置req.Close属性为true,这样不会反复利用一次连接。尝试该操作后依然无法解决问题,遂求助同事璟文。经过大牛的一番调查后,发现时TCP超时,连接断了。至于原因,是由于Goland设置...原创 2019-04-18 17:27:42 · 14058 阅读 · 7 评论 -
Golang中错误处理的建议
该文章摘取自Go 语言实战: 编写可维护 Go 语言代码建议,是llitfkitfk(田浩)在github上翻译自Dave大神的Practical Go: Real world advice for writing maintainable Go programs如有侵权,请联系删除,谢谢7.2. 错误只处理一次最后,我想提一下你应该只处理错误一次。 处理错误意味着检查错误值并做出单...转载 2019-05-05 11:24:42 · 814 阅读 · 0 评论 -
http Host &Set Host in Golang Go语言http包Header设置Host未生效
Host是http1.1版本添加的Header, 可以用于指定具体的Host,通常该Header的值会从URL中自动解析。例如我们请求http://httpbin.org/anything?pass=111,返回的结果如下:{ "args": { "pass": "111" }, "data": "", "files": {}, "form...原创 2019-06-26 16:32:59 · 3076 阅读 · 0 评论 -
Go 语言中三个点的用法
参考资料:3 dots in 4 places在 golang 中,三个点的官方名称是 “three dots”(真·直译),其中常见的三种用法是在代码中:函数的参数声明,如:func VariableParamFunc(nums ...int),在函数的方法体内,nums 作为一个切片[]int来使用。传参时列表打散,如:params = []int{1,2,3},调用某个有三个参...原创 2019-08-26 16:38:57 · 2677 阅读 · 0 评论 -
关于GO语言中值类型与引用类型的思考
首先需要明确的是,在GO语言中,我们利用fmt.Printf("%p", ptr)来显示指针的地址。先看结论,这里引用GO语言圣经中3.1.2章节中关于值语义和引用语义的论述:可以得知切片、map、channel和接口是引用类型。package mainimport ( "fmt")func main() { a := make(map[int]string, 1)...原创 2018-07-20 19:32:00 · 1652 阅读 · 0 评论 -
对照 Ruby 学 Go (Part 7): Ruby与Golang方法对比
转载自: http://zonov.me/golang-for-rubyists-part-7-ruby-and-golang-methods-comparison/ 已获原作者授权原标题: Golang for Rubyists. Part 7. Ruby and Golang, methods comparisonHello, my dear friends. We all love Ruby...转载 2018-07-03 13:03:00 · 388 阅读 · 0 评论 -
Go语言空白表示符_的妙用
在GO语言中,导入了包,却不在代码中使用它,是非法的。当这么做时,编译器是会报错的。其原因是为了避免导入过多未使用的包,从而导致编译时间显著增加。如下代码:package main import ( "geometry/rectangle" // 导入自定的包)func main() {}上面的程序将会抛出错误 imported and not used: "geometry/...转载 2018-06-26 10:10:13 · 2263 阅读 · 0 评论 -
go语言消息机制利用--实现连接池与goroutine同步
在go语言中,我们使用基于消息传递的通信方式(而不是大多数语言所使用的基于共享内存的通信方式)进行协程间通信。消息管道(channel)属于go语言基本的数据类型,使用类型关键字(chan)进行定义,并发操作时线程安全。我们可以利用消费者生产者模型,结合go语言的消息管道,实现同步。1、连接池(以Redis为例)package mainconst poolSize = 10func mai...原创 2018-06-20 15:27:58 · 892 阅读 · 0 评论 -
gin框架中自定义向log中写入调试信息
我们在项目的调试过程中,需要将一些自定义信息写入到log文件中,gin框架中提供了基础的Logger()方法,查看gin的文档,有如下信息: How to write log filefunc main() { // Disable Console Color, you don't need console color when writing the logs to fil...原创 2018-06-27 17:20:20 · 14252 阅读 · 0 评论 -
对照 Ruby 学 Go (Part 1): Go 1.10 OSX系统安装及新手起步
转载自: http://zonov.me/golang-osx-installation-and-getting-started/原标题: Golang for Rubyists. Part 1. Go 1.10 OSX installation and getting startedHey folks, I’m starting getting my feet wet with Golang a...转载 2018-07-03 10:50:57 · 197 阅读 · 0 评论 -
GO接口赋值与方法接收者问题
这篇博客是受到GO语言中文网论坛中问题启发所写,原链接在此https://studygolang.com/topics/5946其中第一个回复为博主有代码如下:package mainimport "fmt"type TestStruct struct { id int name string}type AnotherTestStruct struct { id int...原创 2018-07-09 23:37:37 · 1383 阅读 · 0 评论 -
对照 Ruby 学 Go (Part 2): Go 类型
转载自: http://zonov.me/golang-for-rubyists-part-2-go-type-system/ 已获原作者授权原标题: Golang for Rubyists. Part 2. Go type systemHello, my dear Golang newcomers. I feel so excited when I start writing this post...转载 2018-07-03 11:10:13 · 212 阅读 · 0 评论 -
对照 Ruby 学 Go (Part 3): *与&, 指针与引用
转载自: http://zonov.me/golang-for-rubyists-part-3-ampersands-and-asterisks-pointers-and-references/ 已获原作者授权原标题: Golang for Rubyists. Part 3. Ampersands and asterisks. Pointers and references.Welcome ba...转载 2018-07-03 11:31:43 · 375 阅读 · 0 评论 -
对照 Ruby 学 Go (Part 4): Go的函数与Ruby中方法的不同
转载自: http://zonov.me/golang-for-rubyists-part-4-how-go-functions-are-different-from-ruby-methods/ 已获原作者授权原标题: Golang for Rubyists. Part 4. How Go functions are different from Ruby methodsGood morning,...转载 2018-07-03 11:44:25 · 251 阅读 · 0 评论 -
对照 Ruby 学 Go (Part 5): 将Golang部署到AWS Lambda
转载自: http://zonov.me/golang-for-rubyists-part-5-how-to-start-applying-golang-to-aws-lambda/ 已获原作者授权原标题: Golang for Rubyists. Part 5. How to start applying Golang to AWS LambdaIn the company I work for...转载 2018-07-03 12:08:18 · 660 阅读 · 0 评论 -
对照 Ruby 学 Go (Part 6): 结构体,方法与接口
转载自: http://zonov.me/golang-for-rubyists-part-6-structs-methods-and-interfaces/ 已获原作者授权原标题: Golang for Rubyists. Part 6. Structs, Methods and InterfacesLet the force be with you, my friends. Today we ...转载 2018-07-03 12:55:01 · 232 阅读 · 0 评论 -
GO接口小记
Go语言中,任何类型都是空接口类型的实现类型。声明:类型实例 := new(某实现接口的类型) // 或者 `var 类型实例 接口类型`,然后`类型实例 = new(某实现接口的类型)`调用:类型实例.接口方法()某类型实现接口方法:func (某类型) 方法名() { 方法内容} func (d *D) click() { fmt.Println("knock, ", d.Age...原创 2018-05-10 16:49:33 · 160 阅读 · 0 评论