美文网首页彬哥Go语言笔记Golang语言社区
彬哥笔记 --12 Go语言 读取游戏配置文件 实例

彬哥笔记 --12 Go语言 读取游戏配置文件 实例

作者: Golang语言社区 | 来源:发表于2018-12-29 15:54 被阅读49次

          大家好,我是彬哥,本节给大家讲下使用go语言服务器开发读取配置的例子,抛砖引玉了,实际需求还是按照自己熟悉的技术来做最好,彬哥只是给大家提供一个思路。
    流程如下:

    CSV配置文件格式 如下:


    CSV配置文件

    注:如果是在Linux下使用,而CSV是在window平台下配置数据,那么CSV文件一定要注意编码问题,修改编码流程如下

    1. 用记事本打开CSV文件


      记事本打开

      2 菜单栏 --【文件】--【另存为】


      另存为
      3 选择 UTF-8 编码
      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语言,大家加油,我是彬哥,下期见!如果文章中不同观点、意见请文章下留言或者关注下方订阅号反馈!


    社区交流群:221273219
    Golang语言社区论坛 :
    www.Golang.Ltd
    LollipopGo游戏服务器地址:
    https://github.com/Golangltd/LollipopGo
    社区视频课程课件GIT地址:
    https://github.com/Golangltd/codeclass


    Golang语言社区

    相关文章

      网友评论

        本文标题:彬哥笔记 --12 Go语言 读取游戏配置文件 实例

        本文链接:https://www.haomeiwen.com/subject/rpqplqtx.html