Slayer
24.10.2017
08:06:31
https://i.imgur.com/Mfjm1Ea.png
Никита
24.10.2017
08:07:37
если тебе эта функция нужна, чтобы инкапсулировать путь до конфига, то просто return parseConfig(configPath)
и у тебя скорее всего parseConfig возвращает 1 переменную
а Config это структура, а не интерфейс, так что нельзя венуть ее nil
вроде написано все в консоле )
Slayer
24.10.2017
08:08:37
да
Google
Slayer
24.10.2017
08:08:50
ладно, пока выкину проверку тут
Daniel
24.10.2017
08:09:46
Но это очень плохой код, вы в курсе?
Slayer
24.10.2017
08:15:18
как ему быть хорошим когда я только начал изучать go?
nezorflame
24.10.2017
08:16:14
а вообще, конечно, в текущем виде в этой функции смысла нет
Morran
24.10.2017
08:19:35
или возвращать не структуру а указатель на нее
Alexey
24.10.2017
08:19:41
nezorflame
24.10.2017
08:19:58
йеп
Alexey
24.10.2017
08:22:00
А говорят, что нехорошо, когда log управляет не только логированием, но ещё и выходом из приложения:)
nezorflame
24.10.2017
08:24:42
если это при инициализации, то нормально
ты ничего не сделаешь в программе, если у тебя конфиг не але
в данном случае log.Fatal просто сэкономит строчку
Alexey
24.10.2017
08:25:19
Google
Alexey
24.10.2017
08:26:07
Ну в main да, я тоже log.fatal делаю:)
nezorflame
24.10.2017
08:26:29
ну да, пихать его в функции айяй
Daniel
24.10.2017
08:27:52
Slayer
24.10.2017
08:29:24
почему же, я в нем подгружаю функцию обработки лог файла, возвращаю структуру заполненную параметрами и уже потом ссылаюсь везде на эту функцию
nezorflame
24.10.2017
08:29:41
а можно было бы просто parseConfig вызывать
Slayer
24.10.2017
08:29:42
в случае чего - не придется лопатить 10 функций а только 1
nezorflame
24.10.2017
08:29:45
в мэйне
и там же проверить ошибку
и log.Fatalf("Описание %s", err) при ошибке
Slayer
24.10.2017
08:30:31
%s в логфатале не работает
nezorflame
24.10.2017
08:30:41
Fatalf
хотя смотря какой логгер
Slayer
24.10.2017
08:30:57
аа
Daniel
24.10.2017
08:32:11
Slayer
24.10.2017
08:32:51
а как потом выдергивать параметры из структуры? везде вызывать parseConfig? неудобно
там настройки всего сервера
Daniel
24.10.2017
08:33:15
nezorflame
24.10.2017
08:33:34
- передавать нужный кусок конфига дальше
- сделать конфиг глобальным
- вызывать функции с параметрами из конфига
Slayer
24.10.2017
08:33:44
пока голова не включается в нужном направлении
nezorflame
24.10.2017
08:33:45
choose your destiny
Google
Alexey
24.10.2017
08:34:02
и книги умные читай
Daniel
24.10.2017
08:34:22
Есть простой тест
Slayer
24.10.2017
08:34:39
книга умная у меня 1 - Язык программирования Go - 2016 (Брайан У. Керниган)
Daniel
24.10.2017
08:34:55
Если на код нельзя написать unit test - он, скорее всего, не нужен
Slayer
24.10.2017
08:34:58
но просто читать - скучно, пилю свой проэктик паралельно
Alexey
24.10.2017
08:35:09
Slayer
24.10.2017
08:35:17
пока рано :)
Alexey
24.10.2017
08:36:19
Slayer
24.10.2017
08:37:14
у меня пока на стадии ctrl+c ctrl+v + подрихтовал и сделал как хочется
не судите меня строго :)
nezorflame
24.10.2017
08:37:58
да мы наоборот, советуем как лучше
Slayer
24.10.2017
08:38:23
спасибо
Kirill
24.10.2017
08:50:27
Товарищи гоферы, вопрос по экономии памяти
Есть некий стракт с кучей данных
type BigStruct struct {
tenMillionsInts []int
}Если вызвать метод с bs BigStruct то в bs попадет полная копия данных, на это уходит память и время. Плохо.
func (bs BigStruct) test0() {
fmt.Println("lal")
}
Передаем указатель - все ок, памяти почти не тратится... Но можно пойти глубже
func (bs *BigStruct) test1() {
fmt.Println("lal")
}В таком виде методы прекрасно работают. Стоит все методы которые не обращаются к стракту писать так?
func (BigStruct) test2() {
fmt.Println("lal")
}Или вообще так?
func (*BigStruct) test3() {
fmt.Println("lal")
}
Alexander
24.10.2017
08:51:53
зачем эти методы приписывать к структуре, если они с ней не работают?
так:
func test3() {
fmt.Println("lal")
Ilya
24.10.2017
09:06:36
DrivernName() string например
Alexander
24.10.2017
09:08:22
такая информация должна идти в структуру при инициализации
s := server.NewServer(conf, srv)
s.CommitHash = version
s.BuildStamp = buildstamp
Google
Alexander
24.10.2017
09:08:34
Вообще повсеместное явление: забить на заданный вопрос и ответить на тот, что никто не спрашивал. Ну не идеальный пример человек привел, но смысл вопроса же понятен? :)
Ilya
24.10.2017
09:10:03
при func (BigStruct) test2() {..} скорей всего вся структура тоже будет копироваться
Методы структуры в итоге разворачиваются в func test2(_ BigStruct, ...) {}
Kirill
24.10.2017
10:07:55
Ilya
24.10.2017
10:10:03
Вообще в книге go programming language рекомендуется чтобы у объекта был вызов методов или по ссылке или по значеню, но не смешанно
Maxim
24.10.2017
10:19:11
Slayer
24.10.2017
11:00:27
подскажите, в директории handlers лежат 3 файла, все идут как пакет handlers, как мне получить доступ к функции что лежит скажем во 2м файле? просто прописав её имя - не канает, импорт "./handlers тоже не канает
а нет
канает
Maxim
24.10.2017
11:01:19
Slayer
24.10.2017
11:01:31
почему же? вполне себе работают
с гитом тапример влом заморачиватся
да и стыдно показывать людям :)
Blue Screen of Death
24.10.2017
11:01:54
не нужен гит
просто настраиваешь gopath и складываешь всё в gopath/src/путь/имя_проекта
Slayer
24.10.2017
11:02:32
я под проект настраиваю
Alexander
24.10.2017
11:02:35
Anton
24.10.2017
11:14:36
Кого инглиш интересует, заходите @ https://t.me/English10Words
Blue Screen of Death
24.10.2017
11:15:06
Egor
24.10.2017
11:16:31
/report
Google
Konstantins
24.10.2017
11:17:43
/report
Che
24.10.2017
11:36:43
посоны, а есть какие-нибудь тулзы, что бы сконвертировать сишные структурки в гошные? а то руками так не хочется
Alexander
24.10.2017
11:37:24
awk
Che
24.10.2017
11:37:43
*и желательно чтобы читабельно было. а то c2go такое выдает
Alexander
24.10.2017
11:39:15
хотя конвертер структур проще на Go же и написать, не надо awk
Che
24.10.2017
11:39:35
думал может уже готовое есть
Alexander
24.10.2017
11:40:58
и, кстати, все равно придется руками доделывать. В какой-то структуре, например, практичней будет указать тип int32, а не int в зависимости о того, как это поле будет использоваться и куда передаваться
AxiS
24.10.2017
12:23:31
А кто какие либы (кроме viper) для конфигов использует? В viper сохранение конфигов так и не добавили(
Nikolay
24.10.2017
12:23:45
Alexander
24.10.2017
13:19:27
Всем привет. Кто реализовывал чат один к одному на сокетах поделитесь своим опытом. Что то я завис, везде в примерах показывают "общий" чат.
Daniel
24.10.2017
13:19:44
а в чем проблема-то?
Alexander
24.10.2017
13:20:10
С понимание как это реализовать
Все делают бродкаст в один канал