Помогите новичку - ссылочные типы и интерфейсы...

250 views
Skip to first unread message

Сергей Жуматий

unread,
Mar 11, 2015, 11:08:58 AM3/11/15
to gola...@googlegroups.com
  Приветствую всех!
  В go я новичок, но программирую достаточно давно и на разных языках. Столкнулся с проблемой, не понимаю где дурак... Ткните, пожалуйста, носом хоты бы в документацию (там про это как-то скудно), чтобы понять наконец где я лажаю.
  Вот пример кода: https://gist.github.com/7afa16fcbbf305588d57.git
  А вот его выдача:

$
./example
2015/03/03 14:50:01 NewA: &{id:}
2015/03/03 14:50:01 Update A: &{id:}
2015/03/03 14:50:01 B: &{Afield:<nil>}

  Понимаю, что где-то данные передаются по значению вместо ссылки, но не понимаю где и как. Из документации и блога Го я понял, что интерфейс - ссылка по определению и "ссылка ни интерфейс" это вообще экзотика и в 99% случаев "это не то, что вам нужно". А вот как тут сделать верно - не понимаю пока :(

Daniel Podolsky

unread,
Mar 11, 2015, 11:12:37 AM3/11/15
to gola...@googlegroups.com
а что как пример в http://play.golang.org/ сделать?
> --
> Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
> Чтобы отменить подписку на эту группу и больше не получать от нее сообщения,
> отправьте письмо на электронный адрес
> golang-ru+...@googlegroups.com.
> Чтобы настроить другие параметры, перейдите по ссылке
> https://groups.google.com/d/optout.

Alexandr Lurye

unread,
Mar 11, 2015, 1:27:17 PM3/11/15
to gola...@googlegroups.com
Когда вы объявляете метод как 
func (a Atype) SetId(...)
вы создаёте копию Atype при каждом вызове, и модифицируете копию.

Вам нужно объявить их так:
func (a *Atype) SetId(...)
func (b *B) SetA(...)

--
Reply all
Reply to author
Forward
0 new messages