2021
04-27
04-27
为什么不建议在go项目中使用init()
前言go的init函数给人的感觉怪怪的,我想不明白聪明的google团队为何要设计出这么一个“鸡肋“的机制。实际编码中,我主张尽量不要使用init函数。首先来看看init函数的作用吧。init()介绍init()与包的初始化顺序息息相关,所以先介绍一个go中包的初始化顺序吧。(下面的内容部分摘自《Thegoprograminnglanguage》)大体而言,顺序如下:首先初始化包内声明的变量之后调用init函数最后调用main函数变量的初...
继续阅读 >
今天在学习dubbo-go的时候,下载了dubbo-go的example,依赖的包太多了,之前都是手动下载某个依赖的包,现在手动一个一个goget那太麻烦了。因为我是搞java的,刚开始用go的时候感觉有点奇怪,go代码所依赖的所有的第三方库都放在GOPATH这个目录下面,这就导致了同一个库只能保存一个版本的代码。如果不同的项目依赖同一个第三方的库的不同版本,应该怎么解决?总不能改包名吧,看了一下dubbo-samples/golang/的代码发现了有个go.mod文...
先要明白Fscanf的工作原理Fscanf在遇到\n才结束遇到\r时就会把\r替换成0这就有个问题,要注意自己的文本换行符是什么,在Windows下就是\r\n,在Linux,Mac下就是\n,也就是说这里有个坑,代码在Linux和Mac下读取数据文件是正常的,在Windows下就会遇到各种行末尾有个0,网上办法用什么替换啊,用什么自定义Scan函数啊,太麻烦了,直接使用自带IDE将打开的数据文件集换行符改成LF(Linux,Mac换行符)就行了如下图Idea文件右下角LF点...
分享两个常用的代码生成工具:gormgenhandlergengormgen基于MySQL数据表结构进行生成3个文件:生成表的struct结构体生成表的Markdown文档生成表的CURD方法场景在进行业务需求开发时,创建完数据表后,执行代码生成工具,常用的CURD操作全部生成完毕,使用的时候只需要.后面的方法即可,这样大大提高了业务开发效率。示例表结构:CREATE TABLE `user_demo` ( `id` int(11)&...
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/453介绍在我们工作中,如果遇到如网页URL去重、垃圾邮件识别、大集合中重复元素的判断一般想到的是将集合中所有元素保存起来,然后通过比较确定。如果通过性能最好的Hash表来进行判断,那么随着集合中元素的增加,我们需要的存储空间也会呈现线性增长,最终达到瓶颈。所以很多时候会选择使用布隆过滤器来做这件事。布隆过滤器通过一个固...