在Golang中将interface {}转换为struct

我是Go的新手,正努力了解所有不同的类型以及如何使用它们。 我有以下接口(最初在json文件中):
[map[item:electricity transform:{fuelType}] map[transform:{fuelType} item:gas]]

并且我有以下的结构:

type urlTransform struct {
        item string
        transform string
}

我不知道如何将接口数据放入结构中。 我敢肯定这确实很愚蠢,但是我会一直努力。 有任何的帮助都将不胜感激。

Decode the JSON directly to types you want instead of decoding to an interface{}.

Declare types that match the structure of your JSON data. Use structs for JSON objects and slices for JSON arrays:

type transform struct {
    // not enough information in question to fill this in.
}

type urlTransform struct {
    Item string
    Transform transform
}

var transforms []urlTransform

The field names must be exported (start with uppercase letter).

Unmarshal the JSON to the declared value:

err := json.Unmarshal(data, &transforms)

or

err := json.NewDecoder(reader).Decode(&transforms)

From your response : [map[item:electricity transform:{fuelType}] map[transform:{fuelType} item:gas]]. As you can see here this is a an array that has map in it.

One way to get the value from this is :

values := yourResponse[0].(map[string]interface{}). // convert first index to map that has interface value.
transform := urlTransform{}
transform.Item = values["item"].(string) // convert the item value to string
transform.Transform = values["transform"].(string)
//and so on...

as you can see from the code above I'm getting the the value using map. And convert the value to the appropriate type in this case is string.

You can convert it to appropriate type like int or bool or other type. but this approach is painful as you need to get the value one bye one and assign it your your field struct.