前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go实战抢红包系统(四) - 基础实施层coding

Go实战抢红包系统(四) - 基础实施层coding

作者头像
JavaEdge
发布2022-11-30 15:17:06
6790
发布2022-11-30 15:17:06
举报
文章被收录于专栏:JavaEdge

1 Go的枚举

1.1 定义常数实现枚举

◆ 类型别名的形式来声明类型 ◆ iota来自增和自动赋值

显然输出为2

这样亦可.

1.2 何时可用iota ,何时又不可用iota呢?

◆ 无状态且非持久化,可以使用iota ◆ 有状态或者需要持久化,不能使用iota

1.3 显式iota定义

定义好之后,值不可再改变!

2 在Go中如何使用JSON

2.1 标准库内建的JSON包

默认使用的JSON字段名称是它的Field名称

2.2 并非任何类型都可序列化

◆ 支持string、 bool、 数字类型、数组和切片、结构体、map ◆ Channel、complex、 function 类型无法进行json序列化 ◆ 结构体中的循环数据结构,序列化时不会被处理

2.3 结构体中自定义字段名称

◆ JSON tag key : name,[omitempty,-] ◆ [string]标记 , 定义bool,浮点,整数类型使用字符串编码 ◆ 临时添加字段:内嵌结构体,合并多个结构体

2.3.1 序列化演示

  • demo代码-json.go
  • 运行结果
  • 对name进行自定义
  • 可以发现age无法实现序列化导出,将其改为大写即可
  • 其中的omitempty可以过滤空值(包括0),于是结果中不再包含age信息
  • 有-不会序列化
  • 去除-即可
  • 整型加上string会以字符串形式序列化

2.3.2 反序列化演示

  • 无法序列化id,所以要求json一定要与结构体中数据类型保持一致

2.4 高性能JSON库 - jsoniter [json-iterator]

◆ 快,并且更快 ◆ 支持java和go ◆ 百分百兼容JSON标准库, 一行代码迁移到jsoniter ◆ 安装: go get github.com/json-iterator/go

3 config 配置

3.1 分类标准

内容

静态和动态

环境

开发、测试、灰度、生产

形式

本地文件和分布式服务

格式

ini > properties > yaml > toml > xml > json(推荐度排序)

用途 - 程序/应用级别

◆ 配置文件命名规范 前缀+[-_ ]+功能

◆ 程序级别 可以不分组,比如: boot.ini,config.ini

◆ 应用级别分组 比如app-mysql.properties

环境来变量化配置项

◆ 不同环境使用不同的配置文件 ◆ 变量化因环境不同的可变配置项

3.2 统一配置工具库 - props 设计

◆ 各种配置源抽象或转换为key/value结构

◆ 支持prop,ini,zk,consul.etcd,nacos

◆ 支持unmarshal

◆ props配置客户端工具库加持+ INI格式

◆ INI文件由节、键、值组成

◆ INI格式三要素 :节、参数(key/value)、注释

◆ section :方括号包围,比如: [mysql]

◆ 参数: key=value ,有些工具支持冒号分割

◆ 注释,使用;,有些编辑器和工具支持#

◆ Section作为分组

◆ props配置客户端使用完整的key来解释

◆ 完整的key由Section和参数key组成 , .分割

4 基础资源层-配置设计-starter编码

  • config.ini

参考

golang中struct转json后键名首字母大小写问题解决 GO从0到1实战微服务版抢红包系统

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 Go的枚举
    • 1.1 定义常数实现枚举
      • 1.2 何时可用iota ,何时又不可用iota呢?
        • 1.3 显式iota定义
        • 2 在Go中如何使用JSON
          • 2.1 标准库内建的JSON包
            • 2.2 并非任何类型都可序列化
              • 2.3 结构体中自定义字段名称
                • 2.3.1 序列化演示
                • 2.3.2 反序列化演示
              • 2.4 高性能JSON库 - jsoniter [json-iterator]
              • 3 config 配置
                • 3.1 分类标准
                  • 内容
                  • 环境
                  • 形式
                  • 格式
                  • 用途 - 程序/应用级别
                  • 环境来变量化配置项
                • 3.2 统一配置工具库 - props 设计
                • 4 基础资源层-配置设计-starter编码
                • 参考
                相关产品与服务
                文件存储
                文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档