@proGO

Страница 945 из 1674
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
ладно, пока выкину проверку тут
просто вместо nil, err можно возвращать Config{}, err

а вообще, конечно, в текущем виде в этой функции смысла нет

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
А говорят, что нехорошо, когда log управляет не только логированием, но ещё и выходом из приложения:)
это да, Но log.Fatal даже в официальной документации постоянно приводят в примерах

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
как ему быть хорошим когда я только начал изучать go?
Он не с точки зрения языка плох. В нем смысла 0

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? неудобно

там настройки всего сервера

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
пока голова не включается в нужном направлении
ты особо не растраивайся. Когда напрограммируешь более10к строчек кода - все будет четко видится. А пока программируй, дерзай.

и книги умные читай

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
но просто читать - скучно, пилю свой проэктик паралельно

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
при func (BigStruct) test2() {..} скорей всего вся структура тоже будет копироваться
Т.е. произойдет копирование которые проживет ровно одну итерацию гарбэдж коллектора. Ясно, спасибо. Выходит для статических методов лучше (*BigStruct)

Ilya
24.10.2017
10:10:03
Вообще в книге go programming language рекомендуется чтобы у объекта был вызов методов или по ссылке или по значеню, но не смешанно

Slayer
24.10.2017
11:00:27
подскажите, в директории handlers лежат 3 файла, все идут как пакет handlers, как мне получить доступ к функции что лежит скажем во 2м файле? просто прописав её имя - не канает, импорт "./handlers тоже не канает

а нет

канает

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
я под проект настраиваю

Anton
24.10.2017
11:14:36
Кого инглиш интересует, заходите @ https://t.me/English10Words

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 сохранение конфигов так и не добавили(

Alexander
24.10.2017
13:19:27
Всем привет. Кто реализовывал чат один к одному на сокетах поделитесь своим опытом. Что то я завис, везде в примерах показывают "общий" чат.

Daniel
24.10.2017
13:19:44
а в чем проблема-то?

Alexander
24.10.2017
13:20:10
С понимание как это реализовать

Все делают бродкаст в один канал

Страница 945 из 1674