
golang进阶之路
go语言进阶学习之旅
陈墨1234
go语言工程师的进阶之路,微信公众号:golang学习之路
展开
-
go-elasticsearch创建ik索引并进行查询操作
本次测试用例是在kimi智能助手的帮助下写的,合理使用人工智能确实能够极大程度的提高效率,比单纯的阅读、一个个查询文档、api接口的效率好上许多。原创 2025-02-06 23:48:32 · 401 阅读 · 0 评论 -
go json反序列化成指定类型
其实主体逻辑在测试用例中,根据json字符串中特定字符串确定是将json串解析成何种子类,逻辑比较简单。原创 2024-09-07 18:07:25 · 578 阅读 · 0 评论 -
读go语言自制解释器(二)解析ast
nil {return valeval求值的过程如上所示,结合上一节的代码,可以更好的帮助理解代码引用自https://interpreterbook.com/waiig_code_1.7.zip,有兴趣的同学可以去下载全部代码。原创 2024-09-07 13:48:39 · 910 阅读 · 0 评论 -
读go语言自制解释器(一)生成ast
"IF = "IF""if": IF,ok {return tok词法分析的主要功能就是将从文件中读出来的一个个字符拼接成一个个符合特定意义的token,供后续的语法分析阶段处理(方便生成ast)。以上就是生成ast的介绍了,其实理解了递归下降的解析方式,参照书中,自定义一个小型的语言集,我想大家也都可以实现一个ast解析树吧。原创 2024-09-07 13:47:44 · 621 阅读 · 0 评论 -
go的父子类的简单使用
可以看到父类的函数被子类给覆盖掉了,类似于这种用法,可以在父类上定义好公共方法(抽象方法)和一些被实现的可以被子类调用的非抽象方法(主要负责数据的校验和处理等逻辑),然后子类自定义实现公共方法,然后调用父类的非抽象方法对数据进行校验和抽离等逻辑。这也应该算是go里面的父子类的一个典型应用吧。原创 2024-09-03 15:59:29 · 323 阅读 · 0 评论 -
goleveldb的原理简述(基于golang的goleveldb库)
其实就是按图索骥,抓住主要接口和主体逻辑,比如这里图中的open、get、put、delete接口,然后一个个理解相应的代码逻辑,当然也要对lsm-tree原理有所了解。掌握这些之后,基本上很快就可以理解相应的代码逻辑了,不过我这里基于的:golang/leveldb.git是这个版本的代码库,整体逻辑相对简单一点,没有那么多借助于管道通信的操作,比较容易理解,对于理解lsm-tree的基本原理应该是足够了。原创 2024-09-03 15:58:43 · 1103 阅读 · 0 评论 -
go boltdb删改版(仅支持增删改查功能)
db.Get()查询数据,db.Put()增改数据,db.Delete()删除数据,db.Commit()用于增、删、改数据之后的后置操作,对b+树及页进行调整操作,详细细节可以参阅代码阅读代码的方法:主体逻辑都在db.go文件中,其他文件都是基于增、删、改、查主体逻辑的扩展。原创 2024-08-31 23:29:14 · 618 阅读 · 0 评论 -
go boltdb简单解析
阅读源码的时候建议结合测试用例一起进行,然后理解整个bolt的功能就是增删改查,其他就是辅助性的,比如数据的落盘、树的大小调整、页大小的调整等等。原创 2024-08-31 23:28:24 · 303 阅读 · 0 评论 -
go实现工厂模式(简易版)
这就是简单的工厂的实现,类似于一个工厂,生产出来各式各样实现相同接口的物品。原创 2024-08-27 19:10:10 · 239 阅读 · 0 评论 -
go mmap使用
【代码】go mmap使用。原创 2024-08-27 19:08:57 · 364 阅读 · 0 评论 -
golang实现自定义锁
通过上述两种情况的对比可以发现go的锁的实现还是很成功的。原创 2024-08-04 21:10:48 · 310 阅读 · 0 评论 -
golang读写excel
注:f.SetSheetRow("Sheet1", startCell, &data[i]),将sheet的行与一行数据关联起来直接插入即可,不需要调用f.SetCellValue()一个格子一个格子的插入数据,比较麻烦。1、excelize库安装(使用go modules)2、读excel文件。3、写excel文件。原创 2024-08-03 09:57:06 · 477 阅读 · 0 评论 -
golang实现协程池
go协程池可以看成一个被初始化的固定大小的协程循环读取函数队列,获取是否有可供调用的函数队列,如果有,则协程池中的一个协程调用并执行该函数,talk is cheap,show me the code。好了,整体代码介绍完了,希望你能对协程池有个比较简单的了解,也可以基于此代码,丰富一下逻辑。测试用的代码如下所示。原创 2024-08-03 09:52:51 · 725 阅读 · 0 评论