Size: a a a

2020 December 08

ВС

Владимир Столяров... in Go-go!
обычный array literal
источник

SP

Slava Pinchuk in Go-go!
PIN_Key_Index []TEXT,
источник

ВС

Владимир Столяров... in Go-go!
TEXT[] по-моему
источник

SS

Stanislav Sagan in Go-go!
Daniel Podolsky
по ссылке выше кто угодно может прийти
Спасибо)
источник

Д

Денис in Go-go!
Добрый день, могли бы вы подсказать, возможно передать *int в interface{} и в последующем получить его значение в другой функции?
источник

H

Hiroki Fujisawa in Go-go!
Возможно.
источник

Д

Денис in Go-go!
А могли бы вы подсказать в каком направлении почитать чтобы найти ответ еще?
источник

H

Hiroki Fujisawa in Go-go!
источник

H

Hiroki Fujisawa in Go-go!
Но у меня есть подозрение, что вы что-то не очень правильное делаете.
источник

Д

Денис in Go-go!
Не отрициаю, но если коротко на данный момент есть структура в которой мне нужно проверить что десериализация из json приходит без пустых полей, а в решенни уже реализован универсальная функция которая принимает interface{} и возвращает новый

По задумке сейчас в него должен упасть *string или *int пройти проверку на nil, а на выход получить уже зачение
источник

М

Марк Егоров... in Go-go!
Марк Егоров
Возвращаясь к нашим баранам:

Есть функция, она что-то делает и возвращает тип данных User, который представляет из себя struct.

При этом структура содержит поля, которые ее не позволяют сравнивать.

Как элегантно решается история с успешным возвращением или неуспешным?

Насколько я понимаю, поскольку структуру сравнить нельзя, то единственным вариантом является что-то вроде:
user:= someFunc...

if user.someP == nil {

//функция ничего не вернула потому что ничего не нашла
}



Но элегантным этот способ не назвать. Может есть какой-то типовой набор кейсов на подобные случаи жизни?
Пока пришел к варианту такому:

Вместо:

 func GetUser(id int) (SomeType, error) 


возвращать:
 func GetUser(id int) ( []SomeType, error) 


Который уже и может быть nil, и поддается сравнению.

Мне кажется, это неплохое, масштабируемое решение
источник

ВС

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

D

Dmitry in Go-go!
return SomeType{}, UserNotFoundError
источник

G

Ghost in Go-go!
Марк Егоров
Пока пришел к варианту такому:

Вместо:

 func GetUser(id int) (SomeType, error) 


возвращать:
 func GetUser(id int) ( []SomeType, error) 


Который уже и может быть nil, и поддается сравнению.

Мне кажется, это неплохое, масштабируемое решение
Чем не подошло
func GetUser(id int) (*SomeType, error)
?

nil если юзера нет
источник

D

Dmitry in Go-go!
не нужно выдумывать велосипед
источник

М

Марк Егоров... in Go-go!
Ghost
Чем не подошло
func GetUser(id int) (*SomeType, error)
?

nil если юзера нет
Я их побаиваюсь)
источник

М

Марк Егоров... in Go-go!
В одной книге по голангу написано, что если не уверены, то не используйте указатели.
источник

H

Hiroki Fujisawa in Go-go!
Марк Егоров
В одной книге по голангу написано, что если не уверены, то не используйте указатели.
проблем кучу обретают от бездумного использования их
источник

G

Ghost in Go-go!
Марк Егоров
Я их побаиваюсь)
Я обычно возвращаю кастомную ошибку, на которую можно сравнить, если не нашлось чегото в базе и потом в вышестоящем слое её обрабатываю. Например апи 404 вернёт.
источник

DP

Daniel Podolsky in Go-go!
Марк Егоров
Пока пришел к варианту такому:

Вместо:

 func GetUser(id int) (SomeType, error) 


возвращать:
 func GetUser(id int) ( []SomeType, error) 


Который уже и может быть nil, и поддается сравнению.

Мне кажется, это неплохое, масштабируемое решение
а почему не func GetUser(id int) (*SomeType, error)

эффект тот же, а накладных расходов меньше
источник