Golang
文章平均质量分 63
_little_stone
Talk is cheap, show me the code.
展开
-
Golang:全局变量初始化遇到的问题记录
Go 程序执行出现空指针,但是经过代码检查,变量有进行赋值,如何排查及解决呢?原创 2023-07-24 22:37:39 · 899 阅读 · 2 评论 -
golang for循环使用细节——瞬间提高你的代码执行速度
golang for循环使用细节——瞬间提高你的代码执行速度案例样例一:样例二:分析样例一:样例二:优化样例一:样例二:本文将带你深入了解 golang 中 关于 for 循环的使用细节,以及如何避免在开发过程中犯一些错误,导致代码执行速度极慢,甚至引发一些未知的错误。别人在看到你的代码时,也不会内心在那吐槽了。。。案例在日常开发中经常看到的一些代码样例:样例一:for i := 0; i < getCount(); i++ { // do something}for i原创 2021-06-16 15:39:50 · 3915 阅读 · 0 评论 -
解golangci-lint错误:level=error msg=“Running error: can‘t combine options --disable-all and --disable
在本地搭建golangci-lint集成到goland,使用时出现以下错误:level=error msg="Running error: can't combine options --disable-all and --disable经过一番排查,又是升级golangci-lint的版本,又是放弃自动安装选择手动安装,都没能解决,根据提示找到golangci.yml文件,找到报错的 lint 类型,没有办法只能将其注释掉:但是这样不能从根本解决问题,而且项目中其他同事也没有说有这个问题,于是原创 2021-06-02 09:44:51 · 5323 阅读 · 0 评论 -
golang defer
golang deferdefer是golang的一个特色功能,defer用来声明一个延迟函数,把这个函数类似于放到一个栈上,在方法return之前触发调用。我们经常用他来做一些资源的释放,比如关闭io操作。defer的具体规则:延迟函数的参数在defer语句出现时就已经确定下来了。延迟函数执行按后进先出顺序执行,即先出现的defer后执行(类似于栈);延迟函数可能操作主函数的具名返回值;即使出现panic,defer函数也会正常执行。解释:defer语句中的参数值在defer出现时就原创 2021-04-18 16:19:36 · 1161 阅读 · 0 评论 -
golang channel
golang channelchannel类型:读写方式上来看,有以下三种:可读可写;仅可写;仅可读;使用情况来看,分为传输的数据类型和是否有缓冲两种情况:传输的数据类型:channel理论上可以传输任意的数据类型,根据声明时指定的数据类型,传输对应的数据,如chan int就是表示可读写int类型数据的channel;无缓冲channel(同步channel):实际就是同步channel,向无缓冲channel写入数据时,如果没有消费者取出数据,则在写入这个时机就阻塞住了,这原创 2021-04-18 16:14:44 · 1173 阅读 · 0 评论 -
golang数组和切片的区别
golang数组和切片的区别声明方式不同,数组声明需要指定长度(无论是显式指定还是编译器根据元素个数推断都是指定),切片则不用;数组长度固定,无法改变,切片长度不固定,可以自动扩容;数组是值类型,切片是引用类型。数组在作为参数传递时,是直接在内存中拷贝了一份数据进行传递,切片则传递的是引用地址,所以在方法中对数组进行修改不会影响原数组,而切片则会受影响;切片可以用cap函数计算容量、len函数计算长度,数组只有len函数计算长度,换句话说,切片比数组多一个cap属性;切片的底层是数组。附:原创 2021-04-18 16:08:13 · 2264 阅读 · 0 评论 -
golang时间戳、日期字符串、time类型数据互转
golang时间戳、日期字符串、time类型数据互转time转日期字符串time转时间戳时间戳转time时间戳转日期字符串日期字符串转time日期字符串转时间戳附:Github仓库地址time转日期字符串const ( YearMonthDay = "2006-01-02" HourMinuteSecond = "15:04:05" DefaultLayout = YearMonthDay + " " + HourMinuteSecond)// time转为默认格式的日期字符串原创 2021-02-04 19:04:39 · 4874 阅读 · 0 评论 -
300行Go代码实现钉钉或微信的网页解析功能
我们平时在使用微信或者钉钉聊天时,当我们发送一个网址到微信或钉钉聊天框时,微信或钉钉会帮我们进行解析,生成一个卡片式的网址预览样式,闲来无事,我用golang试着写了一个能够实现类似功能的代码。需求分析首先分析钉钉展示卡片样式如下:卡片内容包含:网址标题、网页描述、网页地址、网页的icon等信息。所以我们需要从网址中解析出以上信息,明白了需求,现在就开始撸代码了。话不多说直接上代码,设计思路在代码中有注释描述:package utilimport ( "fmt" "git.fo.原创 2020-10-29 18:05:49 · 1608 阅读 · 1 评论 -
Go 语言编码风格指南
Go 语言编码风格指南注释在注释文本和斜线之间插入一个空格为顶层的导出的名字添加文档注释命名Error 变量命名对于有多个大写字母的单词或专名,小写全部字母使用单数形式的仓库和文件夹名称切片不要显式地初始化切片使用len()检查切片是否为空使用`copy()`复制切片`append`可以将字符串添加到字节切片字符串空字符串检查随机数不要使用math/rand生成密码错误处理在适宜的地方使用error类型代替字符串包装你的错误不要使用panic进行普通的错误处理不要忽略错误变量在Go语言官方提供的Effec原创 2020-09-17 14:20:43 · 1282 阅读 · 0 评论 -
golang实现数组分割
golang 数组分割需求:给定一个数组和一个正整数,要求把数组分割成多个正整数大小的数组,如果不够分,则最后一个数组分到剩余的所有元素。示例1:数组:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],正整数:2期望结果: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]示例2:数组:[1, 2, 3, 4, 5, 6, 7, 8, 9],正整数:2期望结果: [[1, 2], [3, 4], [5, 6], [7, 8], [9]原创 2020-09-06 15:13:00 · 6341 阅读 · 0 评论 -
go get 加 -u 和不加 -u 参数的区别
如题,区别如下:加上它可以利用网络来更新已有的代码包及其依赖包。如果已经下载过一个代码包,但是这个代码包又有更新了,那么这时候可以直接用 -u 标记来更新本地的对应的代码包。如果不加这个 -u 标记,执行 go get 一个已有的代码包,会发现命令什么都不执行。只有加了 -u 标记,命令会去执行 git pull 命令拉取最新的代码包的最新版本,下载并安装。...原创 2020-04-20 19:06:57 · 38883 阅读 · 7 评论 -
Golang中方法接收者使用指针与非指针的区别
话不多说直接上代码:type interface1 interface { doubleValue() squareValue()}func newStruct1(value int) interface1 { return &struct1{value}}type struct1 struct { value int}func (s struct1) doub...原创 2020-03-28 15:08:26 · 2884 阅读 · 4 评论 -
Golang不能使用debug模式启动了
如题,报错如下:GOROOT=/usr/local/go #gosetupGOPATH=/home/gxl/go #gosetup/usr/local/go/bin/go build -o /tmp/___go_build_study_array_test -gcflags "all=-N -l" study/array-test #gosetup/usr/local/GoLand-201...原创 2020-03-02 18:37:26 · 5274 阅读 · 2 评论