- 如何在项目中使用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)
}