Go语言实现一个账单本
Posted _小许_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言实现一个账单本相关的知识,希望对你有一定的参考价值。
账单实现了收入和支出账单的记录,结构体为一条记录数据,结构体数据存储所有数据,如下:
代码如下:
package main
import (
"fmt"
)
var isTrue bool = true
func main()
for
if isTrue == true
index()
else
break
func index()
println("------------家庭收入账单记录--------------")
println(" ")
println(" 1.收支明细 ")
println(" 2.登记收入 ")
println(" 3.登记支出 ")
println(" 4.退出 ")
print("请选择~:1-4:")
var flag int
fmt.Scan(&flag)
//fmt.Println(flag)
var money getMoney
switch flag
case 1:
income(income_array)
case 2:
revice(money)
case 3:
send(money)
case 4:
logout()
default:
fmt.Println("输入错误重新输入")
// 收入结构体
type getMoney struct
item1 string //收支
item2 float32 //账户金额
item3 float32 //收支金额
item4 string //说明
// 总金额
var all_money float32 = 0.0
// 结构体数组
var income_array [20]getMoney
var i int = 0
// 展示
func income(income_array [20]getMoney)
fmt.Println("收支\\t账户金额\\t收支金额\\t说明\\n")
for i := 0; i < 20; i++
if income_array[i].item1 != ""
fmt.Printf("%s\\t%.2f\\t%.2f\\t%s\\n", income_array[i].item1, all_money, income_array[i].item3, income_array[i].item4)
// 登记收入
func revice(money getMoney)
money.item1 = "收入"
money.item2 = 0.0
fmt.Println("收入金额:")
fmt.Scan(&(money.item3))
all_money = money.item3 + all_money
fmt.Println("本次收入说明:")
fmt.Scan(&(money.item4))
income_array[i] = money
i++
fmt.Println("----------登记完成-------")
func send(money getMoney)
money.item1 = "支出"
money.item2 = 0.0
fmt.Print("本次支出金额:")
fmt.Scan(&money.item3)
all_money = all_money - money.item3
fmt.Println("本次支出说明:")
fmt.Scan(&money.item4)
income_array[i] = money
i++
fmt.Println("----------登记完成-------")
func logout()
fmt.Println("确定退出吗?1.是 2否")
var flag int
fmt.Scan(&flag)
if flag == 1
isTrue = false
else
isTrue = true
结构体显示记录的数据结构
type getMoney struct
item1 string //收支
item2 float32 //账户金额
item3 float32 //收支金额
item4 string //说明
结构体数组用来记录所有的记录
var income_array [20]getMoney
全局变量记录总金额数
var all_money float32 = 0.0
Go语言实现高并发日志监控系统
Golang作为21世纪的C语言,凭借其简单和高效,如今已经被越来越多的人当成主力编程语言,并发是Golang最大的优势。本项目是实现了一个可在生产环境使用的高性能的日志监控系统。
Golang是一门简单高效的编程语言,我在编写学习的过程中也被其特性所吸引,日志监控系统是生产环境中必备的功能系统,它的作用可以说仅次于核心系统 而Golang的协程实现可以很好的帮我们完成这一核心功能,通过模拟读取nginx输出的日志文件,使用log_proccess.go进行实时读取解析写入到influxdb存储, 再由grafana进行实时展现。mock_data.go是我用于模拟日志输出的一个应用程序。
Golang的并发实现可以通过goroutine执行,而多个goroutine间的数据同步与通信则是channel,且多个channel可以选择数据的读取与写入。 这里需要认真理解下并发与并行。并发:指同一时刻,系统通过调度,来回切换交替的运行多个任务,“看起来”是同时进行;并行:指同一时刻, 两个任务“真正的”同时进行;
以下是我们的开发流程图。
日志分析系统实战
1、系统架构设计
2、读取模块的实现
——打开文件
——从文件末尾开始逐行读取
——写入Read Channel
3、解析模块的实现
——从Read Channel中读取每行日志数据
——正则提取所需的监控数据(path、status、method等)
——写入Write Channel
4、写入模块的实现
——初始化influxdb client
——从Write Channel中读取监控数据
——构造数据并写入influxdb
5、绘制监控图
——用grafana
6、监控模块的实现
——总处理日志行数
——系统吞出量
——read channel长度
——write channel长度
——运行总时间
——错误数
本项目以上传github,点击阅读原文即可跳转
Influxdb简介:
Influxdb是一个开源的时序性的数据库,使用Go语言编写,被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。有以下特性:
——部署简单,无外部依赖
——内置http支持,使用http读写
——类sql的灵活查询(max,min,sum等)
以下是项目运行的相关工作图
项目做,做了日志的模拟输出,然后实时写入到influxdb,grafana则实时的进行数据展示。
以上是关于Go语言实现一个账单本的主要内容,如果未能解决你的问题,请参考以下文章