Привет все. Подскажите, не понял как тут быть.
type QQ[F any, T any] interface {Set(T)
Get() T
}
type Q struct {
p string
}
func (q *Q) Set(in string) {
q.p = in
}
func (q Q) Get() string {
return q.p
}
func D[F, T QQ[F, T]](v T, t *testing.T) {
e := *new(F)
e.Set(v)
t.Log(e.Get())
}
func TestOne(t *testing.T) {
D[Q, string](string("test"), t)
}
Ошибка не видит Set, в целом то понятно почему, но если сделать так
func TestOne(t *testing.T) {
D[*Q, string](string("test"), t)
}
Перестает видеть Get, и это тоже понятно.
Proposal предлагает что-то типа такого
type Set[F any, T any] interface {
Set(T)
*F
}
type QQ[F Set[F], T any] interface {
Get() T
}
х.з. как это работает, нечего толком не получилось.
Подскажите плиз, может я изначально не туда капаю.
--
Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/golang-ru/fd51a606-f3f8-4389-af10-4c168f055d03n%40googlegroups.com.
e := *new(F) ------ !!!
}
Грубо есть похожие струтуры и у них есть похожие методы, описывают они данные. Эти данные надо писать к примеру в базу или еще как то обрабатывать. Появилось желание подсократить код в плане обработки, сделать его более общим, а всю уникальность затянуть а структуры данных.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/golang-ru/CAOrB69M7t8i0G-UsUwPYHWcGWjND73hwgeHFnDk2Pgybtzxh3Q%40mail.gmail.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/golang-ru/CAOrB69M7t8i0G-UsUwPYHWcGWjND73hwgeHFnDk2Pgybtzxh3Q%40mail.gmail.com.
--
Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/golang-ru/b6a4283a-3a1c-4af2-ad28-4b9641765877n%40googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/golang-ru/19386174-8bae-48ac-a763-0e061a4b6718n%40googlegroups.com.
Вы получили это сообщение, поскольку подписаны на одну из тем в группе "Golang Russian".
Чтобы отменить подписку на эту тему, перейдите по ссылке https://groups.google.com/d/topic/golang-ru/XScLS7ytOpA/unsubscribe.
Чтобы отменить подписку на эту группу и все ее темы, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/golang-ru/1f018aaa-b568-40b7-b29d-1ea4f3adda9cn%40googlegroups.com.
--
Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Чтобы посмотреть обсуждение на веб-странице, перейдите по ссылке https://groups.google.com/d/msgid/golang-ru/fd51a606-f3f8-4389-af10-4c168f055d03n%40googlegroups.com.