具有不同属性的同一XML标签的结构不同

Let's say I have this XML:

<something>
  <value type="item">
    ...
  </value>
  <value type="other">
    ...
  </value>
</something>

Can I somehow extract the value with different attributes to different items on my struct, like:

type Something struct {
  Item  Item  `xml:"value[type=item]"` // metacode
  Other Other `xml:"value[type=other]"`
}

Is it possible? What should I use as the xml: attribute?

I do not think it is possible to directly map a list of items discriminated by an attribute value to specific fields. You need to map it to a slice, like in the following example (Items slice):

package main

import (
    "encoding/xml"
    "fmt"
)

func main() {

    type Item struct {
        Type string `xml:"type,attr"`
        Value string `xml:",chardata"`
    }

    type Something struct {
        XMLName xml.Name `xml:"something"`
        Name string `xml:"name"`
        Items []Item `xml:"value"`
    }

    var v Something

    data := `
    <something>
        <name> toto </name>
        <value type="item"> my item </value>
        <value type="other"> my other value </value>
    </something>
    `
    err := xml.Unmarshal([]byte(data), &v)
    if err != nil {
        fmt.Printf("error: %v", err)
        return
    }

    fmt.Println(v)
}

Up to you to process the slice after the decoding to extract the values and put them in specific fields if needed.