2017-01-25 23 views
1
type Customer struct{ 
    UID string  
    Name string 
    Contact []ContactInfo 
} 
type ContactInfo struct { 
    Number int 
} 

複数の顧客が存在し、各顧客に複数の連絡先番号を割り当てることができます。 以下のように、特定のユーザーのためにstructのContact配列を追加するために以下の方法を使用していました。構造体内の構造体の配列に追加

customer := &Customer{} 
customer.UID = args[0] 
customer.Name = args[1] 
c:= &ContactInfo{} 
c.Number = args[2] 
customer.Contact= append(customer.Contact, *c) 

しかし、私は最新の連絡先を取得し、出力の連絡先の配列ではないため、この方法は機能しません。

+3

次のコードを参照してください( '' append'にポインタをC 'と、それを逆参照にする理由はありませんが)あなたは 'append'を呼んでいる方法には何の問題もありません。この問題は、コード内の別の場所にある可能性があります。私は 'args'型が混乱しているので、その要素を' string'と 'int'フィールドの両方に割り当てることができます。 –

+1

あなたはコードがよく見えます。あなたのコードをもっと少し分けてください。共有しているコードの一部が完璧です –

+0

コードがうまく表示されます。私はあなたのクラスを使用するときに私は複数の連絡先情報を見ることができます:https://play.golang.org/p/RFnqe3n_fu –

答えて

0

オブジェクトを値で関数またはメソッドに渡すときに、観察された動作が可能です。これらの関数内の変更は外部には表示されません。

package main 

import (
    "fmt" 
) 

type X struct{ 
    Y []string 
} 

func modify(x X) { 
    x.Y = append(x.Y, "modify") 
} 

func (x X) change() { 
    x.Y = append(x.Y, "modify") 
} 

func main() { 
    x := X{} 
    modify(x) 
    x.change() 
    fmt.Printf("%+v\n", x) 
}