スライスに実装したメソッドでスライスの要素を変更したい。
スライスを型宣言してデータベースから自身の情報を取得するメソッドを実装したのですが、メソッド内で確認するとArtistというフィールドの情報が取得できていますが、メソッドの呼び出し元で表示するとArtistフィールドを変更できていません。
type Track struct {
gorm.Model
Name string `sql:"not null;unique" json:"name"`
Phonetic string `json:"phonetic"`
Artist Artist `json:"artist"`
ArtistID uint `json:"artistId"`
}
type Tracks []Track
func (ts *Tracks) List(dba *gorm.DB, limit, offset int) error {
err := dba.Order("created_at desc").Limit(limit).Offset(offset).Find(ts).Error
if err != nil {
return err
}
newSlice := make(Tracks, len(*ts))
for i, t := range *ts {
if err = dba.Model(&t).Related(&t.Artist).Error; err != nil {
return err
}
newSlice[i] = t
}
ts = &newSlice
// ここでTrack内のArtistに情報が入っている。
log.Println(ts)
return err
}
func someFunc(){
var tracks Tracks
tracks.List(dba, limit, offset)
// ここで確認するとArtistが初期化されている。
log.Println(tracks)
}
なぜこのような挙動になるのでしょうか。良い実装方法があれば教えてください。よろしくお願い致します。