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

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

1 Go的枚举

1.1 定义常数实现枚举

◆ 类型别名的形式来声明类型

◆ iota来自增和自动赋值

1.png

显然输出为2

1.png

这样亦可.

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

◆ 无状态且非持久化,可以使用iota

◆ 有状态或者需要持久化,不能使用iota

1.3 显式iota定义

image.png

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

2 在Go中如何使用JSON

2.1 标准库内建的JSON包

image.png

默认使用的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

1.png

运行结果

image.png

对name进行自定义

1.png

可以发现age无法实现序列化导出,将其改为大写即可

1.png

其中的omitempty可以过滤空值(包括0),于是结果中不再包含age信息

1.png

有-不会序列化

1.png

去除-即可

image.png

整型加上string会以字符串形式序列化

image.png

2.3.2 反序列化演示

image.png

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

image.png

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组成 , .分割

image.png


目录
相关文章
|
4天前
|
Go 索引
掌握Go语言:Go语言范围,优雅遍历数据结构,简化代码操作实战解析(24)
掌握Go语言:Go语言范围,优雅遍历数据结构,简化代码操作实战解析(24)
|
4天前
|
运维 监控 Go
Go语言微服务实战与最佳实践
【2月更文挑战第14天】本文将深入探讨使用Go语言进行微服务实战中的最佳实践,包括服务拆分、API设计、并发处理、错误处理、服务治理与监控等方面。通过实际案例和详细步骤,我们将分享如何在Go语言环境中构建高效、稳定、可扩展的微服务系统。
|
4天前
|
JSON 监控 安全
Golang深入浅出之-Go语言中的反射(reflect):原理与实战应用
【5月更文挑战第1天】Go语言的反射允许运行时检查和修改结构,主要通过`reflect`包的`Type`和`Value`实现。然而,滥用反射可能导致代码复杂和性能下降。要安全使用,应注意避免过度使用,始终进行类型检查,并尊重封装。反射的应用包括动态接口实现、JSON序列化和元编程。理解反射原理并谨慎使用是关键,应尽量保持代码静态类型。
25 2
|
4天前
|
JSON JavaScript 前端开发
Golang深入浅出之-Go语言JSON处理:编码与解码实战
【4月更文挑战第26天】本文探讨了Go语言中处理JSON的常见问题及解决策略。通过`json.Marshal`和`json.Unmarshal`进行编码和解码,同时指出结构体标签、时间处理、omitempty使用及数组/切片区别等易错点。建议正确使用结构体标签,自定义处理`time.Time`,明智选择omitempty,并理解数组与切片差异。文中提供基础示例及时间类型处理的实战代码,帮助读者掌握JSON操作。
23 1
Golang深入浅出之-Go语言JSON处理:编码与解码实战
|
4天前
|
监控 安全 Go
Go语言高效编码:利用上网行为管理软件实现实时警报系统
本文介绍了如何使用Go语言构建一个实时警报系统,用于监控和管理用户上网行为。通过定义监控规则(如使用正则表达式匹配特定网站),程序可以在检测到违规行为时触发警报。利用Go的goroutine实现并发处理,保证系统高效和实时。此外,系统还将警报信息自动提交至网站,便于管理员及时响应,提升网络安全和员工 productivity。
105 9
|
4天前
|
前端开发 JavaScript Go
Go 实战|使用 Wails 构建轻量级的桌面应用:仿微信登录界面 Demo
Wails 框架提供了一种简洁而强大的方式,让开发者能够利用 Go 的性能优势和 Web 前端的灵活性,从而能够使用更高效、更轻量级的方法来构建跨平台的桌面应用。本文探讨 Wails 框架的使用,从搭建环境到开发,再到最终的构建打包。
48 1
Go 实战|使用 Wails 构建轻量级的桌面应用:仿微信登录界面 Demo
|
4天前
|
存储 安全 编译器
掌握Go语言:精通Go语言范围(range),高级应用及进销存系统实战(25)
掌握Go语言:精通Go语言范围(range),高级应用及进销存系统实战(25)
|
4天前
|
Go C语言 索引
掌握Go语言:探索Go语言中的循环奇妙世界,从基础到实战(13)
掌握Go语言:探索Go语言中的循环奇妙世界,从基础到实战(13)
|
4天前
|
设计模式 缓存 安全
一篇文章带你吃透Go语言的Atomic和Channel--实战方法
一篇文章带你吃透Go语言的Atomic和Channel--实战方法
33 0
|
4天前
|
SQL 机器学习/深度学习 缓存
Go语言Web应用实战与案例分析
【2月更文挑战第21天】本文将通过实战案例的方式,深入探讨Go语言在Web应用开发中的应用。我们将分析一个实际项目的开发过程,展示Go语言在构建高性能、可扩展Web应用方面的优势,并分享在开发过程中遇到的问题和解决方案,为读者提供宝贵的实战经验。