0

データを返すTCP接続があります。また、このデータを表す構造も取得しました。

type Item struct {
  A int32
  B int32
}

ItemUnpackerインターフェイスをサポート

func (item *Item) Unpack(data []int32) {
    item.A = data[0]
    item.B = data[1]
    return
}

type Unpacker interface {
    Unpack([]int32)
}

そのため、一連のアイテムを表すネットワークからデータを受け取ります。ここで、構造体を関数に渡し、データで満たされた構造体のスライスを取得したいと考えています。

func find(packet [][]int32, responseItem Unpacker) (items []Unpacker) {
    items = make([]Unpacker, len(packet))
    for i, data := range(packet) {
        responseItem.Unpack(data)
        items[i] = responseItem
    }
    return
}

もちろん、この場合、多数の同一のアイテム (同じアイテムへのポインター) を持つスライスを取得しました。でも違うアイテムを手に入れたいし、

items[i] = *responseItem

私の場合はうまくいきません。

プレイグラウンドへのリンクは次のとおりです: http://play.golang.org/p/RP4ryxoG2I

Go がどのように機能するかを理解していなかったと思います (Go を使用するのは初めてです)。また、注意してください。可能であれば、ここでリフレクションを使用したくありません。

4

1 に答える 1