Golang XML Unmarshal仅返回子节点的最后一个值

I am trying to extract a simple XML from bellow XML, but the output only returns the last value of Name

package main

import (
    "encoding/xml"
    "fmt"
)

type Member struct {
    Name  []Names `xml:"names"`
    Value string `xml:"value>string"`
}

type Names struct {
    Name  string `xml:"name"`
}

type Result struct {

    Members    []Member `xml:"params>param>value>array>data>value>struct>member"`
}

func main() {
    data := `
    <methodResponse>
    <params>
        <param>
            <value>
                <array>
                    <data>
                        <value>
                            <string>12345abcde12345abcde12345</string>
                        </value>
                        <value>
                            <struct>
                                <member>
                                    <names>
                                     <name> 2 </name>
                                     <name> 3 </name>
                                     <name> 4 </name>
                                    </names>

                                    <value>
                                        <string>trex</string>
                                    </value>
                                </member>

                                <member>
                                    <names>
                                     <name> 2 </name>
                                     <name> 3 </name>
                                     <name> 4 </name>
                                    </names>

                                    <value>
                                        <string>trex</string>
                                    </value>
                                </member>
                           </struct>
                        </value>
                    </data>
                </array>
            </value>
        </param>
    </params>
</methodResponse>`

    v := Result{}
    err := xml.Unmarshal([]byte(data), &v)
    if err != nil {
        fmt.Printf("error: %v", err)
        return
    }
    fmt.Println(v)
}

Try it on The Go Playground:

package main

import (
    "encoding/xml"
    "fmt"
)

type Member struct {
    Names []string `xml:"names>name"`
    Value string   `xml:"value>string"`
}

type Result struct {
    Members []Member `xml:"params>param>value>array>data>value>struct>member"`
}

func main() {
    data := `
    <methodResponse>
    <params>
        <param>
            <value>
                <array>
                    <data>
                        <value>
                            <string>12345abcde12345abcde12345</string>
                        </value>
                        <value>
                            <struct>
                                <member>
                                    <names>
                                     <name> 2 </name>
                                     <name> 3 </name>
                                     <name> 4 </name>
                                    </names>

                                    <value>
                                        <string>trex</string>
                                    </value>
                                </member>

                                <member>
                                    <names>
                                     <name> 2 </name>
                                     <name> 3 </name>
                                     <name> 4 </name>
                                    </names>

                                    <value>
                                        <string>trex</string>
                                    </value>
                                </member>
                           </struct>
                        </value>
                    </data>
                </array>
            </value>
        </param>
    </params>
</methodResponse>`

    v := Result{}
    err := xml.Unmarshal([]byte(data), &v)
    if err != nil {
        panic(err)
    }
    fmt.Println(v)
}

output:

{[{[ 2   3   4 ] trex} {[ 2   3   4 ] trex}]}

I figured this out , by make Name as a slice

Name []string xml:"name"