Daniel
поинтеры тут ни при чем
.
Код покажите
Sebor▂▅▇█▓▒░
Daniel
да ладно
L
Гайз, а никто не сталкивался с такой ошибкой? # runtime/cgo In file included from cgo-gcc-prolog:22: In file included from /usr/local/include/string.h:6: /usr/local/include/string/string.h:7:10: fatal error: 'sstream' file not found Это я делаю go test на mac os x. Чего доставтиь нужно? Раньше не было такой ошибки
Anonymous
такое впечателние, что у тебя с++ код собирается сишным компилятором
L
такое впечателние, что у тебя с++ код собирается сишным компилятором
странно. очень. потому что насильно я ничего такого не делал
Sergey
а xcode стоит?
Sergey
у меня куча проблем было на маке пока не сделал xcode-select --install
L
> xcode-select: error: command line tools are already installed, use "Software Update" to install updates
L
наверное накатить обновления нужно, попробую спасибо
Roman
Stepan
Не подскажите можно ли сделать что-то типа интерфейса для структур с общими полями?
Илья
Вынести поля в структуру, встроить ее во все нужные структуры
Archi
Всем привет. Есть вопрос. В чем разница между вот этими двумя вариантами создания: a := []string AND a:=[]string{} ?
Anonymous
ок var a []string AND a:= []string{}
никакой. просто два способа объявления
Archi
никакой. просто два способа объявления
И тем не менее reflect DeepEqual говорит что они не равны
Archi
func main() { var a []string c := []string([]string{}) b := make([]string, 0) fmt.Printf("a: %v %v cap %d len %d \nb: %v %v cap %d len %d \nc: %v %v cap %d len %d \n %v", a, reflect.TypeOf(a), cap(a), len(a), b, reflect.TypeOf(b), cap(b), len(b), c, reflect.TypeOf(c), cap(c), len(c), reflect.DeepEqual(b, c)) }
Anonymous
И тем не менее reflect DeepEqual говорит что они не равны
С этой стороны, там уже могут быть различия. Например, первый может быть просто указателем на нулевой слайс, а второй даже какую-то память выделенную. Это лишь предположения, на истину не претендую :)
Archi
b и с cjdgflf.n а а им не равна. Хотя и длина и тип и содержание и емкость одинаковые..
Roman
стоит ли запрещать мутабельные function receiver'ы? func (receiver *Type) Method() { // Mutating the receiver value doesn't make much sense receiver = nil }
snip
ок var a []string AND a:= []string{}
В первом случае ты просто объявил переменную, а во втором проинициализировал
Archi
Возможно. Тут Я не спец )
спасибо, по крайней мере понял направление проблемы.
Artem
разве Го автоматом не инитит переменные?
там все сложно, где-то да, где-то нет
Roman
ну и как ты будешь что-то складывать в него?
func (receiver *Type) Method() { receiver.Field = "newvalue" // fine receiver.AnotherMethod() // fine receiver = nil // not fine! receiver = &T{} // even worse! }
Archi
там все сложно, где-то да, где-то нет
вот где бы почитать про это поподробнее
Roman
https://goplay.space/#qCOMKZCKm5c https://goplay.space/#SjhDxU-q6UK мутирование receiver'а бессмысленная свобода ни к чему хорошему не приводящая
Pawel
Господа кто умеет в SQL. Как мне заюзать в запросе значение столбца d?: CREATE TABLE tab( a,b,c ); SELECT a, (b-c) AS d, (a - d) AS e -- ошибка: unable to resolve column 'd' FROM tab;
Evgeniy
CREATE TABLE tab( a,b,c ); SELECT a, (b-c) AS d, (a - select(d)) AS e FROM tab; попробуй так?
Tigran
SELECT a, d, (a-d) AS e FROM (SELECT a, (b-c) AS d FROM tab)
Pawel
SELECT a, d, (a-d) AS e FROM (SELECT a, (b-c) AS d FROM tab)
да, в наст. время я так и делаю, но хочется упростить
Evgeniy
странно, у меня похожее на my sql работает
Aleksandr
странно, у меня похожее на my sql работает
если strict отключен, а он отключен на старых mysql
Eugenii
не то что бы упростить, но скорее причесать, если база умеет with with t1(d) as (select ...) select ... from t1
Eugenii
ну или view сделать
Pavel
там все сложно, где-то да, где-то нет
просто слайс это структура у которой под капотом указатель, когда объявляем переменную через var указатель принимает дефолтное значение для указателя т.е nil в случае с make в указателе будет не nil, а адрес на массив upd: фигурные скобки тоже позволяют проинициализировать слайс
Sergio
С пробелами и табами думаю будут проблемы
Ужасный ямл. Мы его используем и я страдаю
Sergey
приятный ямл а в жсоне комментарии нельзя
Sergio
Спека ямла больше и сложнее чем XML. Ревьювить конфиги ямла на гитхабе - это вообще песня
Sergio
Спека ямла больше и сложнее чем XML. Ревьювить конфиги ямла на гитхабе - это вообще песня
Ямл только выглядит простым для простых случаев. На самом деле он очень сложный и его трудно очень менеджить
Artem
вот где бы почитать про это поподробнее
чисто формально, он инитит все со значением по-умолчанию, но иногда этим можно сразу пользоваться (например int), а иногда нет (например map). все значения по-умолчанию написаны в спеке/эффектив го
Pawel
WITH with_d AS ( SELECT *, (b - c) AS d FROM tab ), with_e AS ( SELECT *, (a -d) AS e FROM with_d ) SELECT * FROM with_e
есть мнение, что если создать доп. вьюху, выняся with_d на глобальный уровень, то код будет читаться и рефакториться проще. Но это не точно
Pawel
(((
Dmitriy / დიმიტრი
А кто-нибудь использует vgo и IDEA вместе? Я так и не понял как там все настроить что бы была индексация кода и все собиралось нормально. Стартовый проект вообще нерабочий
Dmitriy / დიმიტრი
И вообще. Стоит ли сейчас заморачиваться с vgo или программа еще сырая?
.
Пока что нет смысла
Artem
конечно есть смысл, что б наделать для них issue, что б они не выпускали это в релиз
Roman
type T struct {} func (t *T) M1() {} func (t const * T) M2() {} func (t * const T) M3() {} func (t const * const T) M4() {} — // mutable pointer to mutable T t1 := &T{} // immutable pointer to mutable T t2 := const * T(&T{}) // mutable pointer to immutable T t3 := * const T(&T{}) // immutable pointer to immutable T t4 := const * const T(&T{}) — t1.M1(): legal ✓ t2.M1(): should this be legal? t3.M1(): illegal (T is immutable) ✓ t4.M1(): illegal (T is immutable) ✓ t1.M2(): should this be legal? t2.M2(): legal ✓ t3.M2(): illegal (T is immutable) ✓ t4.M2(): illegal (T is immutable) ✓ t1.M3(): illegal (T is immutable) ✓ t2.M3(): illegal (T is immutable) ✓ t3.M3(): legal ✓ t4.M3(): should this be legal? t1.M4(): illegal (T is immutable) ✓ t2.M4(): illegal (T is immutable) ✓ t3.M4(): should this be legal? t4.M4(): legal ✓ ...
Messer
Привет. Подскажите если на один chan подписано несколько рутин то сообщение обработает первый или оно дойдет всем?
Andrei 🦉
chan - это классическая очередь
Messer
А есть какие-то возможности запроцессить его как topic?
Artem
он тоже так себе решение, но каждый раз дежать у себя альтернативу node_modules меня не прельщает
Zver
А есть какие-то возможности запроцессить его как topic?
Создать несколько каналов и пихать в каждый собщение.
Messer
У меня нет конечного числа и я не могу каждой рутине передать отдельный chan и отдельно их процессить
Artem
А есть какие-то возможности запроцессить его как topic?
а) сделать распределяльщик, который из одного канала пишет во все б) sync.Cond и синкаться через данные (что не go-way, но тоже опциональный вариант)
Andrei 🦉
А есть какие-то возможности запроцессить его как topic?
на каналах такое делать сложно, я обычно храню данные в слайсе, а отдельным читателям выдаю канал-итератор, в который отдельные воркеры пушат значения из этого слайса
Artem
У меня нет конечного числа и я не могу каждой рутине передать отдельный chan и отдельно их процессить
оберни слайс каналов в структуру, когда нужно выделить новый, выделяешь его
Artem
когда приходит сообщение, итерируешься по всем в слайсе а еще погугли, на инглише, 100% есть какая-то либка
Artem
почему?
наверное его отдает внешняя либа
Daniel
кого - его?
Artem
канал, который он хочет броадкастить