GoLang(项目实用:构建配置文件 interface type struct 的联合使用)
- 如何在项目中使用interface
- 项目中结合 type struct 编写配置文件
- 使用数组
- 下属内容是举例在项目中,生成一个第三方接口的包配置 假设第三方命名 coop
package coop //举例配置一个项目中的第三方包文件 import ( "fmt" "crypto/md5" "encoding/hex" ) var ce Coop var key string = "abcdefg12345" //设置签名key //定义接口及包函数 type conf interface{ paramsConfig() map[int]string apiUrlList() map[string]string sign() string } //定义包的公共数据 type Coop struct { param map[int]string urlList map[string]string } func main() { //获取coop需要配置的全部参数 params := paramsConfig() for _,v := range params { fmt.Println(v) } //获取coop包配置的所有接口地址 url := apiUrl() for _,v := range url { fmt.Println(v) } //获取coop配置包的加密签名 p := make(map[string]string) p["name"] = "SkeyJIA" p["ages"] = "18" signVal := sign(p) fmt.Println(signVal) } func paramsConfig() (r map[int]string){ ce.param = make(map[int]string) ce.param[0] = "Name" ce.param[1] = "ages" ce.param[2] = "sign" return ce.param } func apiUrl() (r map[string]string){ ce.urlList = make(map[string]string) ce.urlList["hello"] ="coopvip.levp-techr.cn/test/hellow.php" ce.urlList["index"] = "coopvip.levp-techr.cn/test/index.php" return ce.urlList } func sign(apiParams map[string]string) string { var paramStr string for k,v := range apiParams { paramStr += k + "=" + v + "&" } //fmt.Println(paramStr) //删除最后一个& rs := []rune(paramStr) strLength := len(paramStr) endLength := strLength-1 signStr := string(rs[0:endLength]) + key //从第0个开始截取到倒数第二个 fmt.Println(signStr) //打印即将加密的数据 h := md5.New() h.Write([]byte(signStr)) cipherStr := h.Sum(nil) return hex.EncodeToString(cipherStr) }