Golang的Interface转struct

3,801 阅读1分钟

在写golang项目中碰到一个问题——interface转struct,查询了一下,直接使用强转

chargeMap := make[string]interface{}
chargeMap, _ = carcharge.(map[string]interface{})
feeInfo := chargeMap["fee_info"]
fInfo, ok := feeInfo.(FeeInfo)
if ok {
    // do process
}

测试了一下,不能够实现,所以只能采用json序列化:interface->[]byte,[]byte->struct


// 输入电费结构
type FeeInfo struct {
   ElectricityJson []FeeJson  `json:"electricity_json"`
   Park string    `json:"park"`
   Paymethod string `json:"paymethod"`
   ServiceJson []FeeJson  `json:"service_json"`
}

chargeMap := make(map[string]interface{})
chargeMap, _ = carcharge.(map[string]interface{})
feeInfo := chargeMap["fee_info"]
var fInfo FeeInfo
feeByte, _ := json.Marshal(feeInfo)
json.Unmarshal(feeByte, &fInfo)
fmt.Println("fInfo->", fInfo)
// 输出是一个struct,符合条件