Size: a a a

2021 June 23

IL

Ihor Levchenko in Go-go!
Скажем, у меня есть такая структура:

type some struct {
 Name *string
}

есть ли какой-то инлайновый способ создать инстанс структуры с заполненным полем ?

типа..

mySome := &some{ name: “some” } ?
источник

MM

Mansur Mansurov in Go-go!
спасибо, ознакомлюсь
источник

AP

Alexey Palazhchenko in Go-go!
Можно, но часто не нужно — всё-таки, глобальная общая зависимость
источник

J

Johnny in Go-go!
mySome := &some{ name: &“some” }
источник

AP

Alexey Palazhchenko in Go-go!
Именно так, только Name с большой буквы, как в имени поля
источник

IL

Ihor Levchenko in Go-go!
так не работает
Cannot take the address of '"hello"'
источник

AP

Alexey Palazhchenko in Go-go!
А, указатель там. https://github.com/AlekSi/pointer
источник

IL

Ihor Levchenko in Go-go!
я вот смотрю исходники go-github, они вообще сделали так:

```
// Bool is a helper routine that allocates a new bool value
// to store v and returns a pointer to it.
func Bool(v bool) *bool { return &v }

// Int is a helper routine that allocates a new int value
// to store v and returns a pointer to it.
func Int(v int) *int { return &v }

// Int64 is a helper routine that allocates a new int64 value
// to store v and returns a pointer to it.
func Int64(v int64) *int64 { return &v }

// String is a helper routine that allocates a new string value
// to store v and returns a pointer to it.
func String(v string) *string { return &v }

```
источник

AP

Alexey Palazhchenko in Go-go!
источник

ВС

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

ВС

Владимир Столяров... in Go-go!
с появлением женериков это можно будет свести к 1 функции
источник

IL

Ihor Levchenko in Go-go!
я просто проектирую SDK для разработчиков

и у меня для некоторых ендпоинтов есть требование опциональных полей и обязательных

я хз как реализовать без указателей

для опциональных можно просто nil передавать, а для обязательных бросить ошибку и проверку на nil.

А если все делать не указателями, тогда танцы с бубном вокруг проверки на пустую строку, или на 0 или когда булеан по умолчанию false.

приходится очень много нюансов описывать в документации.. что не очень удобно
источник

ВС

Владимир Столяров... in Go-go!
есть подход как в sql.Null*
источник

IL

Ihor Levchenko in Go-go!
то есть - указатели? 😄
источник

AP

Alexey Palazhchenko in Go-go!
Делайте необязательные поля указателями, это норм
источник

AP

Alexey Palazhchenko in Go-go!
sql.NullXXX копировать не надо, это карго культ
источник

AP

Alexey Palazhchenko in Go-go!
источник

IL

Ihor Levchenko in Go-go!
в таком случае я волнуюсь о том что половина будет не указателями, половина указателями.
Потому решил делать все указателями по умолчанию..

хотел утвердиться в сообществе что я иду правильным путем:)
источник

AP

Alexey Palazhchenko in Go-go!
Я бы сделал необязательные указателями, обязательные – значениями. Это сделает жизнь пользователю SDK проще
источник

ЛА

Локоть Анатолий... in Go-go!
а в чем именно плохость - что кто-то из пользователей поменяет его поля?
источник