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)
}

 

posted @ 2017-01-22 16:36  阿波罗一号  阅读(700)  评论(0编辑  收藏  举报