Andrey
если вдруг появляется функция, которой нужен объект с такими свойствами, то тогда да
Andrey
а до этого - зачем заморачиваться?
Roman
https://play.golang.org/p/Sr0on5d2XLR
Roman
сейчас true false false
Roman
а надо чтобы true false true
Roman
такое нужно для гибкости, например, есть разные значения с разными методами, которые хочется передать в интерфейсный тип без использования interface{}
Roman
в параметр функции с одним интерфейсным типом
Roman
тут встраивание не помогает (кажется)
Andrey
а надо чтобы true false true
а почему в кнце true надо?
Andrey
не удовлетворяет же обобщённому интерфейсу
Andrey
для true в конце надо оба метода имплементировать
Andrey
такое нужно для гибкости, например, есть разные значения с разными методами, которые хочется передать в интерфейсный тип без использования interface{}
можно пример, где функция ожидает либо один, либо другой интерфейсный тип в качестве единого аргумента?
Andrey
такой ReaderOrWriter получается
🎉
Люди, покажите кусочек кода как обходить эту чёртову проблему? Scan error on column index 2: converting driver.Value type <nil> ("<nil>") to a int: invalid syntax Вот образец наваял для примеру. https://play.golang.com/p/zYxJ2afP4lY
🎉
Решение знаю, надо в структуре указать sql.NullInt64 и sql.NullString, только что-то это не работает.
Andrey
не работает, в том смысле, что ошибка та же самая?
heavycharged
так у тебя там все NULL кроме ID и DateTime
heavycharged
а в структуре по другому
🎉
а в структуре по другому
Я базу не правильно описал?
Andrey
если поле может быть NULL то оно не "влазит" в тип int или string
heavycharged
Ну судя по DDL в конце, у тебя все NULL кроме ID и DateTime, следовательно либо дату/ либо структуру.
heavycharged
там не важно хранится в поле NULL или нет для конкретной строки
heavycharged
там важна сама возможность хранить в этом столбце NULL
🎉
Вот спасибо, щас поковыряюсь.
Oleh
Подскажите пожалуста type Dialer struct { // Timeout is the maximum amount of time a dial will wait for // a connect to complete. If Deadline is also set, it may fail // earlier. // // The default is no timeout. // // When using TCP and dialing a host name with multiple IP // addresses, the timeout may be divided between them. // // With or without a timeout, the operating system may impose // its own earlier timeout. For instance, TCP timeouts are // often around 3 minutes. Timeout time.Duration
Oleh
если я буду ставить Dialer для многих конектов
Oleh
то Timeout будет для каждого отдельно считатся?
Aleksandr
очевидно да
Pawel
А есть либа, в которой прописана арифметика для sql.NullFloat64? че та гугел не кажет
Andrey
а что значит арифметика?
Pawel
плюс-минус-умножить-разделить
Zhenja
Null * 0 ?
Alexei
ну так возьми его float64 если он валиден и перемножай на здоровье или реагируй на невалидность
Andrey
плюс-минус-умножить-разделить
sql.NullFloat64.float64 же берешь и арифметишь
Andrey
Null * 0 ?
Если бы чат был не про го, можно было бы развести дискуссию)
Anonymous
что посоветуете прочесть про Go
Anonymous
?
Alexei
http://golang-book.ru/
Anonymous
спасибо
Alexei
этого достаточно, как мне кажется. Если знаком с программированием вообще.
Anonymous
а если не знаком
Anonymous
а только кратко мелко
Pawel
Спасибо конечно за мудрые советы, но иногда хочется странного - не писать функции на подобие такой вот (как у меня сейчас) для каждого подобного типа данных, которых у меня внезапно дофига образовалось. это несколько заёбывает func Add(x, y sql.NullFloat64) (r sql.NullFloat64){ r.Float64 = x.Float64 + y.Float64 r.Valid = x.Valid && y.Valid return }
Anonymous
Дж******ов хочется?)))
Кодогенерации! 😃
Pawel
нене, я ленивый - хочеца готового рабочего кода
Andrey
Надо просто отказаться от null в базе
Andrey
Он, кстати, занимает лишнее место
Anonymous
Или отказаться от Go для решения данной задачи.
Andrey
Вариант =)
Pawel
Надо просто отказаться от null в базе
а если значение у поля может быть а может и не быть, то как это предлагаете оформить?
Andrey
0
Andrey
Null * 0 ?
А если у вас не 0, то ответьте на этот вопрос.
Pawel
ага, щас. 0 - это нормальное значение, а магические константы как известно зло
Andrey
Почему у вас возникает необходимость хранить null для типа float64?
Pawel
Почему у вас возникает необходимость хранить null для типа float64?
у меня нет такой необходимости. мне нужно хранить значение поля, котрое может отсутствовать. это стандартный случай
Andrey
стандартный случай это not null default 0
Andrey
у вас же я вижу боль от непродуманного хранения данных
Andrey
Делайте что хотите и мучайтесь со своими решениями, мне правда не принципиально, чтобы вы приняли мою точку зрения)
Pawel
стандартный случай это not null default 0
🤦‍♂️ Я выше написал: 0 - это нормальное значение, оно вовсе не означает что значения нет. Для Вас это по всей видимости понять слишком сложно. Ок. Вы не разбираетесь в этом. Нет смысла Вам высказываться на эту тему.
Andrey
Вы правы
Dmitry
поэтому и рекомендуют использовать нулевые значения, для стабильности программы.
Andrey
Да прост, чтоб не писать в миллионе мест if sql.NullFloat64.Valid()
Zhenja
А если у вас не 0, то ответьте на этот вопрос.
три раза перемножил столбиком - всё равно Null получается, а не 0
Илья
Тогда продолжайте хотеть странного, https://gist.github.com/Rubentxu/c353cac8f18321dbd96d/
Pawel
Тогда продолжайте хотеть странного, https://gist.github.com/Rubentxu/c353cac8f18321dbd96d/
спасибо, но такой код я бы ни в жисть не пустил в продакшен)
Илья
спасибо, но такой код я бы ни в жисть не пустил в продакшен)
Вы же странного хотите, я бы странное тоже в продакшн не пропустил
Pawel
Вы же странного хотите, я бы странное тоже в продакшн не пропустил
я имел ввиду нечто, упрощающее жизнь с вот этим вот sql.NullFloat64 Странне - потому что я пока не уверен как это правильно делать в Го.
Илья
Вы хотите мейби монаду, но в общем виде она вам не понравилась. Попробуйте кодогенерацию, может с той стороны зайдет, но ни то, ни другое не go way, насколько я понимаю
🏁Александр
O_o