大家好,我是彬哥,本节给大家讲下使用go语言服务器开发读取配置的例子,抛砖引玉了,实际需求还是按照自己熟悉的技术来做最好,彬哥只是给大家提供一个思路。
流程如下:
CSV配置文件格式 如下:
注:如果是在Linux下使用,而CSV是在window平台下配置数据,那么CSV文件一定要注意编码问题,修改编码流程如下
-
用记事本打开CSV文件
2 菜单栏 --【文件】--【另存为】
3 选择 UTF-8 编码
解析代码 逻辑如下:
package conf
// csv配置表
var G_RoomList map[string]interface{} // 房间列表
var RoomListData map[string]*RoomList // 房间列表
func init() {
G_RoomList = make(map[string]interface{})
RoomListData = make(map[string]*RoomList)
}
//------------------------------------------------------------------------------
// 房间列表
type RoomList struct {
RoomID string // 房间列表
NeedPiece string // 进场花费的金币
NeedLev string // 进场需要的等级
Desc string // 描述
SysPiece string // 系统抽水
WinReward string // 每局获得
IsTop string // 是否置顶
TypeICON string // 活动的ICON
}
package csv
package csv
import (
"LollipopGo/LollipopGo/conf"
"encoding/csv"
"fmt"
"io/ioutil"
"strings"
)
func ReadCsv_ConfigFile_RoomListST_Fun() bool {
// 获取数据,按照文件
fileName := "roomlist.csv"
fileName = "./csv/" + fileName
cntb, err := ioutil.ReadFile(fileName)
if err != nil {
panic("读取配置文件出错!")
return false
}
// 读取文件数据
r2 := csv.NewReader(strings.NewReader(string(cntb)))
ss, _ := r2.ReadAll()
sz := len(ss)
roomidtemp := ""
// 循环取数据
for i := 1; i < sz; i++ {
Infotmp := new(conf.RoomList)
Infotmp.RoomID = ss[i][0]
Infotmp.NeedPiece = ss[i][1]
Infotmp.NeedLev = ss[i][2]
Infotmp.Desc = ss[i][3]
Infotmp.SysPiece = ss[i][4]
Infotmp.WinReward = ss[i][5]
Infotmp.IsTop = ss[i][6]
Infotmp.TypeICON = ss[i][7]
s := string([]byte(Infotmp.RoomID)[:5])
if len(roomidtemp) == 0 {
roomidtemp = s
conf.RoomListData[Infotmp.RoomID] = Infotmp
} else {
if roomidtemp == s {
conf.RoomListData[Infotmp.RoomID] = Infotmp
fmt.Println("+++++++++", conf.RoomListData)
// 仅仅有一个游戏的时候
if i == sz-1 {
conf.G_RoomList[roomidtemp] = conf.RoomListData
}
} else {
// 保存数据
conf.G_RoomList[roomidtemp] = conf.RoomListData
roomidtemp = s
conf.RoomListData = make(map[string]*conf.RoomList)
}
}
}
return true
}
每天坚持学习1小时Go语言,大家加油,我是彬哥,下期见!如果文章中不同观点、意见请文章下留言或者关注下方订阅号反馈!
LollipopGo游戏服务器地址:
https://github.com/Golangltd/LollipopGo
社区视频课程课件GIT地址:
https://github.com/Golangltd/codeclass
Golang语言社区论坛 :
www.Golang.Ltd
有疑问加站长微信联系(非本文作者)