x.(T)
Txx.(T)xnilxT

你的例子:

result["args"].(map[string]interface{})["foo"]
"args"resultsmap[string]interface{}string"foo"
map[string]interface{}structstruct
type Point struct {
    Name string
    X, Y int
}

func main() {
    in := `{"Name":"center","X":2,"Y":3}`

    pt := Point{}
    json.Unmarshal([]byte(in), &pt)

    fmt.Printf("Result: %+v", pt)
}

输出:

Result: {Name:center X:2 Y:3}

在Go Playground号公路上试试吧.

为你的输入建模

您当前的JSON输入可以用此类型建模:

type Data struct {
    Args struct {
        Foo string
    }
}
Foo
d := Data{}
json.Unmarshal([]byte(in), &d)
fmt.Println("Foo:", d.Args.Foo)