Не ну это
Не ну это
Так у меня никогда не будет тянки, только кунчики((((
Eugene
зачем тебе эти тянки?
Eugene
они же фу
Eugene
Vladislav
нельзя дружить с дырками
Eugene
а с отверстиями?
Vladislav
🅞leksiy
Хватит детский сад разводить 👆😅
Eugene
anhckie
так. очередной глупый вопрос - в чем суть функции make() ?
я могу сделать так и так, в чем разница?))
a := make([]int, 5)
a := []int{5}
Vladislav
anhckie
а, стоп. прикол в том, что мейк сделает обнуленный слайс с этой емкостью
Vladislav
прикол ещё в том, что мэйк может сделать это в рантайме, а литерал как константа
anhckie
вот тут пояснительную бригаду плиз ))
Vladislav
anhckie
каждое знакомо, но не понятна суть.
мэйк может сделать это в рантайме, окей, что это дает или не дает? т.е. как можно сравнить эти 2 кейса?
Vladislav
если размер слайса, который понадобится в программе, наперёд не известен, а известен только во время выполнения, то литерал тут не поможет
Vladislav
кроме того, литералом делать большой буфер - такое себе удовольствие
Vladislav
мэйк работает с переменными значениями, литерал сделает слайс только как в коде буквально задано
anhckie
въехал. спасибо!
🅞leksiy
Denis Pershin
🅞leksiy
О литералах жеж
Там так вопрос задан, как будто эти строки эквивалентны
🅞leksiy
Пытаюсь убедиться, что человек не думает, что []int{5} создаст слайс длинной 5
Denis Pershin
anhckie
столкнулся с еще одним непониманием. есть пустой интерфейс - это тип any, ему подходит всё. а как понял nil interface)
anhckie
в моем понимании это неинициалмзированный интерфейс
anhckie
типа в который ничего не положили. то есть если даже есть методы интерфейса, но в нем ничего не лежит - это нил интерфейс?)
Vladislav
nil к интерфейсам напрямую не относится
Vladislav
но верно то, что если ничего не положить в интерфейс будет untyped nil
Vladislav
а можно положить typed nil конкретного типа
Vladislav
интерфейс, грубо говоря, сам по себе пара из идентификатора типа внутри и значения
anhckie
ещё вопрос. как грамотно организовать структуру кодовой базы?
вроде бы, в го это называется clean architecture, однако встречаю разные вариации на гитхабе.
как я понимаю, должны быть директории internal, pkg (если микросервисы, чтобы можно было переиспользовать), config. ну и какие-то служебные для пайплайнов гитхаба и т.п.?
anhckie
если у кого есть актуальный кейс, буду признателен )
Vladislav
clean architecture это не про расположение файликов, и не про го в целом
Vladislav
про файлики тут https://github.com/golang-standards/project-layout
Vladislav
про принципы чистой архитектуры тут: https://www.youtube.com/watch?v=o_TH-Y78tt4&feature=share
Vladislav
(хотя я лично не придерживаюсь ни того, ни того)
Akhmed
Мужики, а log.println пишет в stdout или в stderr ?
Илья
нет, stderr
https://cs.opensource.google/go/go/+/refs/tags/go1.19:src/log/log.go;drc=19309779ac5e2f5a2fd3cbb34421dafb2855ac21;l=90
Не ну это
Akhmed
А можно ли как-то всё выводы одновременно писать и в файл и в stdout, stderror ?
Vladislav
Vladislav
можно
https://pkg.go.dev/io#MultiWriter
Akhmed
Спасибо
Alex
Привет! Подскажите, почему go не ругается в этом случае на отрицательный размер в make?
n := -10
m := make(map[string]int, n)
А если в make сразу -10 записать, то уже ругается на отрицательное число
m := make(map[string]int, -10)
negative size argument in make(map[string]int)
Emin Zalaev
Потому что переменная != число
Илья
Илья
а переменную только в рантайме т.к. мы не знаем какое в итоге число она будет хранить
Alex
понял, го не знает заранее что хранится в этой переменной, поэтому не ругается. Еще не понятно почему в рантайме это вещь не падает?
n := -10
m := make(map[string]int, n)
https://goplay.space/#Jd2SXrFHkqW
Илья
For slices and channels, if n is negative or larger than m at run time, a run-time panic occurs.
с мапой не паникует, всёравно при выводе len(m) будет ноль
Alex
len(m) будет ноль если и положительный size задать константой. Вот интересно что не паникует, не нашел нигде об этом описания
Илья
Emin Zalaev
Илья
если я правильно понял, то отрицательное число сбрасывается
Alex
если я правильно понял, то отрицательное число сбрасывается
спасибо за наводку! Наверное ты прав и срабатывает условие, которое обнуляет hint
mem, overflow := math.MulUintptr(uintptr(hint), t.bucket.size)
if overflow || mem > maxAlloc {
hint = 0
}
https://github.com/golang/go/blob/c81dfdd47aa44bb1da0f60e36742cc0103da4837/src/runtime/map.go#L306
при отрицательном hint uintptr(hint) дает большое число, а там еще перемножение...
n := -10
fmt.Println(uintptr(n)) // 18446744073709551606
Alex
Илья
Alex
да
Илья
пишем proposal?
if hint < 0 {
panic(...)
}
Артем
всем привет, можно ли nginxом или докером запретить пользователям доступ ко всем портам, кроме localhost:80 ?
Артем
на бекендах открыты наружу порты, не хочу чтоб люди ходили
Кіт ✙
Кіт ✙
это делается файрволлом
Артем
понял, благодарю
Alex
подскажите что за конструкция req := request.(CreateRequest) ?
Alex
как правильно нагуглить
Vladislav
Alex
спасибо
Вова
Привет, подскажите что тут не так. Столкнулся с этой проблемой в курсе, вынес отдельно в проект, проблема осталась
Q
listCommand(servProd *handler.Service)?
Q
какой конструктор?
Anton
Anton
такого типа данных как servProd не существует у тебя в коде
Anton
это ты переменную так назвал
Сергей
Всем доброго времени суток. При попытке отправить POST запрос с видео-файлом (multipart/form-data) к стороннему API вываливается такая ошибка: post [url_на_который_отправлял_запрос]: net/http: HTTP/1.x transport connection broken: malformed HTTP status code "0". Подскажите пожалуйста, в чем может быть дело?
kostyaBro
Код бы увидеть