![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Golang
文章平均质量分 86
peachesTao
一天一点点,时刻保持紧迫感!
展开
-
一个go的支持多语言的error自动生成插件
该结构体实现标准库的error接口,实现自定义errorconst(Err_Code_Success = 0 Err_Code_UnKnown = - 1 Err_Code_InValid_Phone = 10001) const(Language_Chinese = 0 //中文 Language_Enligh = 1 //英文) //不同语言对应的错误描述 var errMap = map [ int ] map [ int ] string {原创 2023-07-29 17:14:53 · 685 阅读 · 0 评论 -
一个go的http和grpc客户端库
大家好,我是peachesTao,今天是五一假期的第4天,首先祝大家劳动节快乐。,该库是我公司根据最佳实践总结开发出来的,它可以提升开发效率,让开发者聚焦于业务层代码。下面我从三个方面来介绍。原创 2023-05-02 20:28:25 · 1134 阅读 · 2 评论 -
Go的泛型来了
来源:公众号【peachesTao】作者:peachesTao原文地址:Go的泛型来了大家好,我是peachesTao,本周三go语言史上改动最大的版本Go 1.18发布了,为什么说的改动最大的?因为Gopher们期待已久的泛型包含在这里版本中,之前Go 1.18 Beta 1中有实验性的泛型。除了泛型,Go 1.18 还包含其他的新功能,如:模糊测试、工作区,详细的更新内容请参考Go 1.18 Release Notes。如果你想知道go为什么需要泛型可以参考why-generics,.原创 2022-03-20 23:07:21 · 1172 阅读 · 0 评论 -
go中的nil容易踩的坑
来源:公众号【peachesTao】作者:peachesTao原文地址:go中的nil容易踩的坑大家好,我是peachesTao,有2个多月没有更新了,没有达到一个月更新两次的标准,过了个年变得懒散了,现在已找回专注,今天给大家介绍一下go中使用nil时容易踩的坑。先看一段代码packagemainimport"fmt"typeMyErrorstruct{CodeintMsgstring}func(e*MyError)Error()st...原创 2022-03-14 20:47:23 · 749 阅读 · 1 评论 -
go如何实现可选参数
大概的意思是:go语言函数不支持默认参数是刻意为之,默认参数使得通过添加更多参数来修补API设计缺陷变得太容易了,导致过多的参数与交互难以解开甚至理解,为不同的可选参数定义不同函数可以使得api更清晰和理解原创 2021-12-11 22:24:22 · 4637 阅读 · 0 评论 -
Can‘t run linter goanalysis_metalinter: buildir: failed to load package : could not load export dat
昨天在一个项目根目录执行下执行golangci-lint run命令时报如下错:WARN [runner] Can't run linter goanalysis_metalinter: buildir: failed to load package : could not load export data: no export data for "uclass_console/internal/controllers"解决方案:将代码中"uclass_console/interna原创 2021-10-27 17:59:39 · 8108 阅读 · 0 评论 -
go语言中的for range
大家好,我是peachestao,今天是国庆节的最后一天,大部分人应该都已经返程了,不知道大家这个国庆玩的怎么样。前段时间工作有点忙,加上生活中的一些事导致一个月没更新了,以后会加快更新频率。分享是一个再学习的过程,不知道大家有没有过这样的体会:某个知识点写之前觉得掌握透了,但是当你写出来的时候发现自己对知识点的理解有盲区,只掌握了个大概,不知道来龙去脉,无法自圆其说。秉着”写出来并让大家理解就是自己完全掌握透了的“分享原则,会逼着自己查阅各种资料并亲手实践,在这个过程中你会恍然大悟:”原来如此原创 2021-10-07 22:41:04 · 7082 阅读 · 0 评论 -
go语言内存对齐
大家好,我是peachesTao,今天跟大家聊一聊go语言中的内存对齐,这个知识点涉及到计算机运行原理,也是go面试中经常被问的问题通过这篇文章你可以了解到go语言中内存是怎么对齐的,以及代码怎么写才能更有效的利用内存。本次分享分为4个部分 什么是内存对齐? 为什么要内存对齐? 如何做才能内存对齐? 对于内存对齐,程序员能做点什么 什么是内存对齐?以下定义来源于网络现代计算机中内存空间都是按照字节(byte)进行划分的,所以从理论上讲对于任何类型的原创 2021-09-05 21:45:30 · 482 阅读 · 0 评论 -
go语言传参是值传递还是引用传递
曾经在某次go面试中被面试官问到:“go中引用类型有哪些?”,我答到:“slice,map,channel”,面试官:“其实go没有引用类型,都是值类型“,当时我就懵了,这么基础的问题居然我跟面试官意见不同。现在想想也许是我听错了,他应该说的是:”go没有引用传递,都是值传递“。我们今天就来聊一下这个话题。一个简单的例子funcmodifySlice(slice[]int){ slice[0] = 11}funcmain(){mySlice:=[]int{1,2,3} m...原创 2021-08-23 13:25:45 · 2062 阅读 · 4 评论 -
如何理解go语言提倡组合,不提倡继承
如何理解go语言提倡组合,不提倡继承刘凯_7013关注0.5992018.12.27 11:43:36字数 944阅读 9,980学习golang的过程中,有一个比较关注的价值观,golang提倡组合,不提倡继承。看过一些书和资料,感觉对这个概念的解释都不是很满意,特总结这篇文章,大家指正。希望通过阅读本文,对网上的一些说法做纠正。比如 “golang是如何用组合实现继承的”,组合是组合,继承是继承,golang也没有想要混为一谈。应该说,golang是如何利用组合代替继承的~组合与转载 2021-02-28 15:04:20 · 643 阅读 · 0 评论 -
Go 为什么这么“快”
Go 为什么这么“快”腾讯技术工程转载于:https://zhuanlan.zhihu.com/p/111346689已认证的官方帐号关注他402 人赞同了该文章本文主要介绍了 Go 程序为了实现极高的并发性能,其内部调度器的实现架构(G-P-M 模型),以及为了最大限度利用计算资源,Go 调度器是如何处理线程阻塞的场景怎么让我们的系统更快随着信息技术的迅速发展,单台服务器处理能力越来越强,迫使编程模式由从前的串行模式升级到并发模型。并发模型包含 ...转载 2020-10-22 21:20:38 · 402 阅读 · 0 评论 -
defer关键字
3.4 defer关键字转载于:https://tiancaiamao.gitbooks.io/go-internals/content/zh/03.4.htmldefer和go一样都是Go语言提供的关键字。defer用于资源的释放,会在函数返回之前进行调用。一般采用如下模式:f,err := os.Open(filename)if err != nil { panic(err)}defer f.Close()如果有多个defer表达式,调用顺序类似于栈,越后面的defer转载 2020-10-11 21:18:47 · 1424 阅读 · 0 评论 -
自己用go写的一个轻量级的 restful api web框架
bingo这是自己写的一个轻量级的golang restful api web框架,基于httprouter组件项目地址:https://github.com/peachestao/bingo,欢迎大家使用并踊跃提bug,我会第一时间处理快速使用1、下载 go get github.com/peachestao/bingo2、例子package mainimport ( "github.com/peachestao/bingo")func main(){ engine := bin原创 2020-09-16 20:51:13 · 762 阅读 · 0 评论 -
concurrent write to websocket connection
问题:在使用github.com/gorilla/websocket库时报"concurrent write to websocket connection"的错原因是该库不支持并发向conn写数据,详情请参考:https://github.com/gorilla/websocket/issues/380解决方案:在向conn写数据前先加锁,之后再解锁即可解决此问题,读数据同理type WsConn struct { *websocket.Conn Mux sync.RWMu.原创 2020-09-04 13:25:36 · 3620 阅读 · 0 评论 -
golang 安装etcd clientv3 报错
golang go mod 安装etcd clientv3 报错报错github.com/coreos/etcd/clientv3/balancer/resolver/endpoint../../pkg/mod/github.com/coreos/etcd@v3.3.18+incompatible/clientv3/balancer/resolver/endpoint/endpoint.go:114:78: undefined: resolver.BuildOption../../pkg/mo转载 2020-05-27 21:24:00 · 2855 阅读 · 6 评论 -
使用go module导入本地包的方法教程详解
go module 是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13 版本开始,go module 将是Go语言默认的依赖管理工具。到今天Go1.14 版本推出之后Go modules 功能已经被正式推荐在生产环境下使用了。这几天已经有很多教程讲解如何使用go module ,以及如何使用go module 导入gitlab私有仓库,我这里就不再啰嗦了。但是最近我发...转载 2020-03-12 20:56:27 · 8828 阅读 · 1 评论 -
golang sqlx用法笔记
golang sqlx用法笔记原创westhod 发布于2018-07-26 15:05:58 阅读数 5674 收藏展开在上一篇文章中吐槽了golang 数据库查询接口(https://mp.csdn.net/postedit/80799266),后来在网上找到了sqlx这个第三方库,用起来确实爽多了,这里记录下学习和用法的心得安装:使用命令即可go get github.c...转载 2019-12-27 13:07:47 · 749 阅读 · 0 评论 -
golang select 用法
【golang】select关键字用法select是go语言中常用的一个关键字,其用法也一直被用作面试题来考核应聘者。今天,结合代码来分析下select的主要用法。首先,我们来从官方文档看一下有关select的描述:A "select" statement chooses which of a set of possible send or receive operations...转载 2019-12-22 22:39:22 · 285 阅读 · 0 评论 -
让goland支持proto文件类型
默认情况下IDE goland是不支持protobuf协议文件类型".proto"的,为了更快高效的编写proto文件中的代码下面我们介绍一款插件让其支持,该插件支持关键字高亮及语法错误提示1、File->Settings->Plugins->Browse repositories->输入protobuf support->install,并重启IDE...原创 2019-12-15 22:40:05 · 9703 阅读 · 0 评论 -
Goland DEBUG报错(could not launch process: decoding dwarf section info at offset 0x0: too short)
问题:升级GO版本到1.13.4后发现Goland(版本:goland 2017)的Debug报错,如下:could not launch process: decoding dwarf section info at offset 0x0: too short。原因:Goland的dlv不是新版本,导致不能debug调试。解决方案:1、更新dlv,执行如下命令:go g...原创 2019-11-24 16:09:05 · 671 阅读 · 0 评论 -
golang 使用 protobuf 的教程
1、下载protobuf的编译器protoc地址:https://github.com/google/protobuf/releaseswindow: 下载: protoc-3.3.0-win32.zip 解压,把bin目录下的protoc.exe复制到GOPATH/bin下,GOPATH/bin加入环境变量。(不加也行) 当然也可放在其他目录,需加入环境变量,能让...转载 2019-11-23 22:23:00 · 4313 阅读 · 0 评论 -
golang 中string和int类型相互转换
golang 中string和int类型相互转换版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/iamlihongwei/article/details/79550958总结了golang中字符串和各种int类型之间的相互转换方式:string转成int: int,...转载 2019-11-14 20:09:54 · 5361 阅读 · 0 评论 -
golang时间戳
golang的time包:秒、毫秒、纳秒时间戳输出版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/u012978258/article/details/80822608菜鸟的时候只知道时间戳有10位、13位、还有好长位数的。入坑久了才明白10位数的时间戳是以 秒 为...转载 2019-11-14 19:48:49 · 5826 阅读 · 0 评论 -
golang 实用的在线计算struct占用内存工具
基础数据类型占用内存列表:type size in bytesbyte, uint8, int8 1uint16, int16 2uint32, int32, float32 4uint64, int6...原创 2019-11-12 16:01:03 · 2313 阅读 · 0 评论 -
golang unsafe.Sizeof浅析
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/HaoDaWang/article/details/80005072【golang】unsafe.Sizeof浅析博主也是正在学习golang,在学习过程中遇到了SizeOf的问题。我原先以为,golang中的sizeof和c的s...转载 2019-11-11 20:58:37 · 728 阅读 · 0 评论 -
在 Go 中恰到好处的内存对齐
在 Go 中恰到好处的内存对齐转载于:https://www.jianshu.com/p/9ea2fba64f06红色部分为我在转载的基础上做的修改image原文地址:在 Go 中恰到好处的内存对齐问题type Part1 struct { a bool b int32 c int8 d int64 e byte}在开始...转载 2019-11-11 12:43:05 · 163 阅读 · 0 评论 -
go语言调用append之后是否重新分配内存?
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/zsy619/article/details/70339670查看tidb源代码:::util/charset/charset.go,下面有段代码:// GetAllCharsets gets all charset de...转载 2019-11-10 17:41:45 · 411 阅读 · 0 评论 -
Rabbitmq 简单介绍,安装和go客户端使用
Rabbitmq 简单介绍,安装和go客户端使用1,消息队列介绍1.1 什么是消息队列?消息队列(英语:Message queue)是一种进程间通信或同一进程的不同线程间的通信方式,软件的贮列用来处理一系列的输入,通常是来自用户。消息队列提供了异步的通信协议,每一个贮列中的纪录包含详细说明的数据,包含发生的时间,输入设备的种类,以及特定的输入参数,也就是说:消息的发...转载 2019-11-10 13:17:22 · 1023 阅读 · 0 评论 -
gin 静态资源站点
gin 静态资源站点分类专栏:Golang一般网站开发中,我们会考虑把js,css,以及资源图片放在一起,作为静态站点部署在CDN,提升响应速度。采用Gin实现起来非常简单,当然也可以使用net/http包轻松实现,但使用Gin会更方便。不管怎么样,使用Go开发,我们可以不用花太多时间在WEB服务环境搭建上,程序启动就直接可以提供WEB服务了。package maini...转载 2019-09-20 00:18:55 · 2319 阅读 · 0 评论 -
Golang中获取中文字符串的子串字符位置及截取子串
Golang中获取中文字符串的子串字符位置及截取子串版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/wowzai/article/details/8941865昨天准备用golang做一个简单的文本分析,需要简单的对字符串进行一些操作,在查看了strings和strcon...转载 2019-09-20 00:15:47 · 10501 阅读 · 0 评论 -
go程序部署到linux上运行
go 语言版本:go1.9.2开发环境:win10部署环境:ubuntu 14.04.6一、win10上的操作1、在src目录下依次执行set CGO_ENABLED=0、set GOOS=linux、set GOARCH=amd64命令2、进入主项目目录,执行go build 程序入口文件。我这里是main.gogo build main.go报“cannot...原创 2019-06-18 15:20:06 · 36866 阅读 · 4 评论 -
go get 下载第三方包存储路径问题
问题:在goland命令终端中使用go get 命令下载第三方包时下载的包文件没在系统设置的环境变量(C:\tao\StudyTech\go\Projects)的src中。这里是window开发环境。然后用go env查看环境变量,可以看出有两个GOPATH变量C:\tao\StudyTech\go和C:\tao\StudyTech\go\Projects。问题就出在这里,下载...原创 2019-06-18 11:00:35 · 27286 阅读 · 0 评论 -
Golang - var 和 := 的使用
Golang - var 和 := 的使用转载于:https://studygolang.com/articles/5294Go语言里面定义变量有多种方式。使用var关键字是Go最基本的定义变量方式,有时也会使用到:=来定义变量。定义变量// 定义一个名称为“variableName”,类型为"type"的变量// var variableName typevar num...转载 2019-05-07 11:24:30 · 8391 阅读 · 0 评论 -
golang panic: runtime error: invalid memory address or nil pointer dereference
golang panic: runtime error: invalid memory address or nil pointer dereference [转载于:https://blog.51cto.com/zhixinhu/1844734今天做消息队列持久化存储服务过程中,golang操作mysql 报错:panic:runtime error:invalid memory...转载 2019-05-06 23:06:00 · 5186 阅读 · 0 评论