データを返すTCP接続があります。また、このデータを表す構造も取得しました。
type Item struct {
A int32
B int32
}
Item
Unpacker
インターフェイスをサポート
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 を使用するのは初めてです)。また、注意してください。可能であれば、ここでリフレクションを使用したくありません。