使用golang寫的錯誤碼生成工具

2021-09-10 19:12:48 字數 2879 閱讀 5182

工具說明:

遊戲服務端採用golang語言, 而前端unity是csharp. 

在定義通訊訊息錯誤碼時, 為了避免前後端不一致同時不用寫2份錯誤碼列舉檔案的麻煩.

統一把錯誤碼定義寫在文字檔案中,使用該生成工具生成對應的cs和go檔案供c/s端用.

錯誤碼定義的文字檔案結構:

最終生成的cs檔案:

生成的go檔案:

下面貼入golang原始碼:

package main

import (

"text/template"

"os"

"fmt"

"io"

"bufio"

"strings"

"path/filepath"

"log"

"time"

)const (

errorenumname = "errtype"

errorclassname = "errorcodemanager"

errorpackagename = "errorcode"

authorinfo = "fox"

)type errordata struct

type errormodel struct

func main()

var datas errordata

datas,err =paseerrorcodetext(contents)

if err !=nil

model := errormodel{}

model.enumname = errorenumname

model.managername = errorclassname

model.authorinfo = authorinfo

model.packagename = errorpackagename

model.gentime = time.now().string()

model.items = datas

err = generatecsfile(model)

if err !=nil

err = generategofile(model)

if err !=nil

fmt.println("生成成功,任意鍵退出...")

fmt.scanln()

}//載入錯誤碼文字

func loadfile(path string)(string,error)

defer fi.close()

var temp string

br := bufio.newreader(fi)

forif len(a) >0

}return temp,nil

}//解析文字

func paseerrorcodetext(contents string)(errordata,error)

//idx1 := strings.index(str,"=")

//idx2 := strings.index(str,"//")

name := sli[0]

id := sli[1]

content := sli[2]

var data  = errordata

fmt.println(name,id,content)

}return datas , nil

}//生成cs檔案

func generatecsfile(model errormodel)error}

*/public enum }}

} = } , //}

}}public static class }}

case (int)}.}: return "}";}}

return "沒有該錯誤碼對應資訊! errcode:" + errcode;

}}`teml,err := template.new("cstemplate").parse(csstr)

if err !=nil

fl, err := os.create(getcurpath()+"/errorcode.cs")

defer fl.close()

if err != nil

err = teml.execute(fl,model)

if err != nil

fl.sync()

return nil

}//生成go檔案

func generategofile(model errormodel)error}

*/    

package }

const (

}} = }  //}

})`teml,err := template.new("gotemplate").parse(gostr)

if err !=nil

fl, err := os.create(getcurpath()+"/errorcode.go")

defer fl.close()

if err != nil

err = teml.execute(fl,model)

if err != nil

fl.sync()

return nil

}//獲取當前執行檔案路徑

func getcurpath()string

return strings.replace(dir, "\\", "/", -1) //將\替換成/

}

效果:

使用說明:

1.拷貝上面的golang**並儲存,在該檔案所在目錄開啟cmd命令列工具, 執行: go build ***x.go 即可生成exe檔案

2.把你的錯誤碼定義文字 放在exe同級目錄下,執行exe檔案.

工程:

錯誤碼 使用 Go 定義錯誤碼

不管在什麼系統中,定義錯誤碼都是必不可少的.錯誤碼可以幫助定義問題,通常錯誤碼設計為某種模式結構,可以判斷出錯誤的級別,錯誤的模組和具體錯誤資訊.乙個良好結構的錯誤碼有助於簡化問題描述,當前設計的錯誤碼共有五位,結構如下 1 00 01 服務級別 模組 具體錯誤 第一位是服務級別,1 為系統錯誤,2...

HTTP的錯誤碼

錯誤碼 1xx 資訊提示 這些狀態 表示臨時的響應。客戶端在收到常規響應之前,應準備接收乙個或多個1xx響應。100 繼續。101 切換協議。2xx 成功 這類狀態 表明伺服器成功地接受了客戶端請求。200 確定。客戶端請求已成功。201 已建立。202 已接受。203 非權威性資訊。204 無內容...

常見的錯誤碼

一些常見的狀態碼為 200 伺服器成功返回網頁 404 請求的網頁不存在 503 服務不可用 詳細分解 1xx 臨時響應 表示臨時響應並需要請求者繼續執行操作的狀態 說明 100 繼續 請求者應當繼續提出請求。伺服器返回此 表示已收到請求的第一部分,正在等待其餘部分。101 切換協議 請求者已要求伺...