Size: a a a

2020 June 21

с

сонная википедия... in Go-go!
Optional(*T) в данном случае будет **T
источник

ЕО

Евгений Омельченко... in Go-go!
сонная википедия
а почему не просто *T? чтоб избежать лишних указателей и чтоб не трогать escape analysis?
Нельзя брать адрес обобщённой переменной вроде
источник

с

сонная википедия... in Go-go!
Евгений Омельченко
Нельзя брать адрес обобщённой переменной вроде
можно
источник

ЕО

Евгений Омельченко... in Go-go!
Я не пробовал, но в пропозале написано так
источник

с

сонная википедия... in Go-go!
я пробовал
источник

RS

Roman Sharkov in Go-go!
сонная википедия
я про
type Optional(type T) struct {
      value *T
}
аа, теперь понял

ну тут будет аллокация даже если мы захотим копировать: Optional(int) 🙂
источник

с

сонная википедия... in Go-go!
Евгений Омельченко
Я не пробовал, но в пропозале написано так
источник

с

сонная википедия... in Go-go!
Roman Sharkov
аа, теперь понял

ну тут будет аллокация даже если мы захотим копировать: Optional(int) 🙂
а в другом случае + 1 байт + выравнивание
источник

RS

Roman Sharkov in Go-go!
сонная википедия
а в другом случае + 1 байт + выравнивание
за то нет аллокаций
источник

с

сонная википедия... in Go-go!
ну, да в принципе
источник

с

сонная википедия... in Go-go!
можно еще попробовать сделать тайп-констрейнт из двух структур
источник

с

сонная википедия... in Go-go!
источник

RS

Roman Sharkov in Go-go!
https://go2goplay.golang.org/p/DBdSi2mpqB8

вот с поддержкой encoding/json
источник

ВС

Владимир Столяров... in Go-go!
О, кстати, тут будет ещё полезна другая структура, с полем, указывающим на то, что оно было явно задано в json
источник

с

сонная википедия... in Go-go!
это как
источник

RS

Roman Sharkov in Go-go!
Владимир Столяров
О, кстати, тут будет ещё полезна другая структура, с полем, указывающим на то, что оно было явно задано в json
а?!
источник

ВС

Владимир Столяров... in Go-go!
Ну примерно так:

type Optional(type T) struct {
value *T
explicitlySet bool
}

func (o *Optional(T)) UnmarshalJSON(b []byte) error {
o.explicitlySet = true
...
}
источник

ВС

Владимир Столяров... in Go-go!
Иногда бывает нужно различать наличие поля с дефолтным значением и его отсутствие
источник

с

сонная википедия... in Go-go!
еще бы жсон энкодер об этом знал
источник

с

сонная википедия... in Go-go!
кстати, его же тоже можно переписать
источник