Golang 入门实践项目loafer(安全摸鱼+理财) | 🏆 技术专题第二期征文

3,529 阅读4分钟

前言:

迫于最近市场行情不错,公司又明令禁止上班进行与工作无关活动。

奈何人力终有穷,搬砖太久精神想放松下,明面摸鱼风险又太高,手上有台闲置的服务器(当然大家本地启动也行),身为掘金资深摸鱼区潜水用户🏆,便在周末撸了个本项目--功能较全面+安全摸鱼(如果你也用钉钉的话)+社交(拉上基友们在一个群,交流频率提升50%)的理财工具。

(摸鱼是不好的,一定要先完成本职工作!)

Go语言相关基础各位大神已经说得各种清楚了~,本文则不再赘述,本着实践是最好的学习方法,启动一个有意思的项目,也更有学习兴趣。便简单写了该项目,没有难点但使用到了Go语言的大部分基础运用,适用于有基本的Go语言基础的朋友,也希望给同样有摸鱼需求的同学带来帮助

通过本项目你可以学习到:

  • 启动一个http服务,注册增删改查接口
  • go基本的语法实践
  • go定时器、同步锁等的使用
  • json的序列化与反序列化
  • 文件的io处理
  • 日志的输出
  • 配置读取
  • go爬取新浪和天天基金网站,获取基金or股票代码相关数据
  • 调用钉钉机器人,推送数据
  • 转换字符编码,如将gb2312编码转换为utf-8
  • ......

项目说明:

该项目均使用原生Go库,无任何依赖组件,拉取即可启动,拉取基友一起摸鱼吧。

实现很粗糙,欢迎大家提出建议,一起学习,欢迎star~ 项目目录说明 碍于时间原因,不方便赘述过多,为便于阅读代码,先列个目录说明:

  • loafer(项目目录)
    • acl ---防腐层,此处粗糙的借鉴了领域设计,代码中有详细注释
    • query_fund.go ---抓取基金数据
    • query_stock.go ---抓取股票和指数
    • sendmsg.go --- 发送爬取数据推送数据至dingding
    • control ---控制层,编写接口和业务组合
    • control.go
    • run --- 启动入口,读取配置,注册接口,开启服务
    • run.go
    • server ---业务代码,对基金股票相关数据的增删改查
    • query_fund.go
      • ...... 具体实现详见代码
    • share --- 定义全局共享的数据结构
    • exponent.go --- 大盘指数数据的结构体
      • fund.go --- 基金数据结构体
      • stock.go --- 股票数据结构体
    • util --- 使用到的通用工具方法
    • util.go ---字符处理,编码转换等
    • config.json --- 配置文件
    • Dockerfile --- 编译镜像,貌似还有点问题,还在学习中...望大佬指教
    • main.go ---项目启动入口
项目地址

github.com/stair-go/lo…

功能
  • 工作日9:00 -- 15:00 每半个小时(默认),抓取配置的基金、大盘及股票数据至钉钉机器人
  • 通过Http请求实时请求爬虫和推送
  • 通过Http请求,运行中添加基金或股票代码
预览

股票推送预览

基金推送预览

安装:

环境需求:

拉取本项目代码:

git clone https://github.com/stair-go/loafer.git

启动
修改了根目录的配置后(添加机器人,没有的话,可在控制台看输出),即可直接启动了

go run main.go

配置机器人地址:

注:其中"CodeAttr"为 基金代码,"Exponent"为大盘指数,"Stock"为股票代码,可在启动前配置,也可启动后,通过http接口添加;

接口说明:

默认端口为8189

查询

实时请求爬虫,并推送至dd群

  • 示例: "ip:prot/" or "ip:prot/query"
添加基金代码
  • 路径: "ip:prot/add/fund?code="
  • 示例: 127.0.0.1:8189/add?code=213001
添加股票代码
  • 路径: "ip:prot/add/stock?code="
  • 示例: 127.0.0.1:8189/add/stock?code=sz002905
删除基金代码
  • 路径: "ip:prot/delete/fund?code="
  • 示例: 127.0.0.1:8189/delete?code=213001
删除股票代码
  • 路径: "ip:prot/delete/stock?code="
  • 示例: 127.0.0.1:8189/delete/stock?code=sz002905

小结

本文简单介绍了loafer项目,其使用最基础的go包实现了:

  • 基金和股票数据的抓取
  • 定时轮询或实时请求理财数据的推送
  • 简单的增删改查,通过本地文件持久化
  • 推送数据到第三方接口(钉钉机器银)

希望能帮助到想要了解和学习go语言的同学,也很高兴大家能实际用起来,更欢迎在楼下一起讨论理财知识~:

项目地址为,感谢star~ github.com/stair-go/lo…

(若有不合理处,欢迎指正,见谅,我还是Go语言菜鸡一个)

🏆 (技术专题第二期 | 我与 Go 的那些事......)