@gogolang

Страница 692 из 1630
Rail
06.12.2017
17:41:31
Парни, поодскажите как импортировать функции с файлов если они лежат в одном пакете например, в каталоге parser/ лежат модули main.go и parser.go, и как импортировать функцию из parser.go в main.go?

Oleg
06.12.2017
17:42:03
Если в одном пакете ничего не надо импортировать

Rail
06.12.2017
17:46:49
тогда во всех модулях мне надо прописать package main, так?

Google
Aleksandr
06.12.2017
17:48:10
тогда во всех модулях мне надо прописать package main, так?
а язык учишь принципиально по чату? или можно тебя уговорить пройти какие-нибудь первые шаги?

Всем добрый вечер! С какой книги начать изучение языка?

спасибо, сейчас перечитаю, посмотрю что да как

с tour of go

tour.golang.org??

Kirill
06.12.2017
17:48:53
Aleksandr
06.12.2017
17:50:09
конечно по чату, как иначе
здесь это не любят. (а где любят?)

Rail
06.12.2017
17:53:20
а что любят? в первых шагах, обычно используют пакет и рядом еще пакет и делают импорты, а гугление по вопросу чтобы лежало в одном каталоге не помогло. я и так не пихал импорты, но у меня ошибки: undefined

может не стоит запускать go run main.go или наоборот имена функций с маленькой буквы делать если функции используются только внутри одного пакета

Aleksandr
06.12.2017
17:56:26
а что любят? в первых шагах, обычно используют пакет и рядом еще пакет и делают импорты, а гугление по вопросу чтобы лежало в одном каталоге не помогло. я и так не пихал импорты, но у меня ошибки: undefined
в корне лежит пакет main, в поддиректориях пакеты, соответствующие названию директории. импорты работают по именам пакетов. код текущего пакета импортировать не надо

Rail
06.12.2017
17:59:45
в корне лежит пакет main, в поддиректориях пакеты, соответствующие названию директории. импорты работают по именам пакетов. код текущего пакета импортировать не надо
а если есть желание так сделать: parser/ - main.go - parser.go - settings.go то я могу получается без импортов обойтись, так? если да, то имеет ли значение регистр первой буквы в названии функции?

Aleksandr
06.12.2017
18:00:01
нет

Google
Aleksandr
06.12.2017
18:00:27
первая буква функции указывает на видимость между пакетами. внутри одного пакета весь код доступен

Александр
06.12.2017
18:03:43
gopkg.in/guregu/null.v3 <-- суки!

взяли блин ошибку вернули строкой

внутри UnmarshalJSON делают var v interface{} if err = json.Unmarshal(data, &v); err != nil { return err } далее свичом по типу и вернуть ошибку в виде строки

я уже третий час дебажу эту хрень

Aleksandr
06.12.2017
18:05:28
то есть ты даже другой пакет использовал и удивлялся почему разные пакеты разный ответ отдают. ну ок

Александр
06.12.2017
18:05:30
я уже с ума начал сходить, почему стандартный маршал в сендбоксе работает, а в проекте не тот тип ошибки

кто-же знал что они дефолтные будут подавлять ?

то есть ты даже другой пакет использовал и удивлялся почему разные пакеты разный ответ отдают. ну ок
самое печальное, что мне этот пакет нужен. Я с помощью его возращаю NULL на строки, когда они пустые

в json в смысле

и это не другой пакет, это другой тип

type Test struct { FirstName null.String }

далее через стандартный анмаршел

Mush
06.12.2017
18:09:01
для этого можно сделать *string

Александр
06.12.2017
18:12:00
для этого можно сделать *string
как то боязно указатели то хранить, там выборка и преобразование

еще и в цикле

func fill(entity *db.Entity) { model = &StructModel{} model.key = &entity.getValue() return model; }

как бы оно не умерло

а скорее всего сдохнет на втором запросе

entity ссылается на результаты запроса, они в либе

Google
Александр
06.12.2017
18:15:55
скорее всего почистит

xPushkin
06.12.2017
18:30:18
Друзья, работаю с русскими символами и использую len([]rune(...)) чтобы узнать настоящую длину строки. Это костыль? Как делать правильно?

Dima
06.12.2017
18:32:00
utf8.RuneCountInString()

xPushkin
06.12.2017
18:32:54
Спасибо

Vladislav
06.12.2017
21:54:23
Так. А разве стандартная строка не utf8?

Stanislav
06.12.2017
22:06:57
Так. А разве стандартная строка не utf8?
Всякая строка utf8, но не всякий utf8 - руна

Vladislav
06.12.2017
22:10:19
Всякая строка utf8, но не всякий utf8 - руна
Например? Может вы имели ввиду, что не всякая руна utf8? Русские символы, вроде, входят в utf8.

Максим
06.12.2017
22:24:56
можно ли так очищать слайс, если в нем структуры? rowBuffer := make([]sPort, 0,15000) for .... { rowBuffer = append(rowBuffer,sPort{ip: resp.ip,port: resp.port}) } rowBuffer = make([]sPort,0,15000) лишнее вырезал. Очищается ли нормально память в таком случае?

Максим
07.12.2017
05:48:44
Максим
07.12.2017
05:53:35
Этот процес система убила, памяти слишком много сьел... видимо, так не очищается память

Dmitry
07.12.2017
05:54:35
А точно проблема в массиве?

Alexei
07.12.2017
05:55:09
может память должна не сразу высвободиться

Максим
07.12.2017
05:56:38
А точно проблема в массиве?
Вероятно, так как после его добавления начала программа вылетать.



Dmitry
07.12.2017
05:58:46
ещё как вариант очистить массив - использовать следующую конструкцию: rowBuffer = rowBuffer[:0]

Alexander
07.12.2017
06:33:37
rowBuffer = make([]sPort, 0,15000) - это еще более простой вариант получить пустой слайс, надо заметить

Google
Alexander
07.12.2017
06:34:16
если данные в rowBuffer не нужны - присвой им ссылку новый слайс. в итоге, то на что rowBuffer сылался раньше, почистит коллектор

Максим
07.12.2017
06:39:46
это не вариант. rowBuffer - это не слайс, а ссылка на слайс
А почему память не чистится? Ссылок же не остаётся

Alexander
07.12.2017
06:43:35
не знаю. Можно попробовать руками вызвать коллектор после присвоения новой ссылки на слайс https://golang.org/pkg/runtime/#GC

Admin
ERROR: S client not available

Alexander
07.12.2017
06:44:38
Потому что запуск GC как-то связан у Go с операциями ввода/вывода, а если их нет, он как-то вяло работает

А почему память не чистится? Ссылок же не остаётся
Или, может быть, у тебя что-то в коде, который вырезан из примера, все же держится за какой-то элемент старого слайса

Максим
07.12.2017
07:02:48
из того, что добавил: rowBuffer = append(rowBuffer,sPort{ip: resp.ip, port: resp.port, speed: resp.speed, tx: tx, rx: rx, ipInt: resp.ipInt, tx_mbits: tx_mbits, rx_mbits: rx_mbits, time: resp.time, }) if len(rowBuffer) > 10000 { t := round5min() query := "INSERT INTO CountersTemporary (time,`switch`, `port`, `tx_mbits`, `rx_mbits`, `speed`, `rx`, `tx`) VALUES " for _, r := range rowBuffer { query += fmt.Sprintf("('%v','%v','%v','%v','%v','%v','%v','%v'),", t,r.ipInt,r.port,r.tx_mbits,r.rx_mbits,r.speed,r.rx,r.tx) } query = strings.Trim(query,",") + ";" conn.Exec(query) rowBuffer = make([]sPort,0,15000) } и в default тоже самое. Раньше был просто db.Exec

Alexander
07.12.2017
07:08:02
блин! https://play.golang.org/ же есть :(

Максим
07.12.2017
07:08:58
блин! https://play.golang.org/ же есть :(
только эту функцию закинуть?

ainu
07.12.2017
07:09:15
блин! https://play.golang.org/ же есть :(
Блин, прочитал как " блин! https://play.golang.org/ жесть :( " И минуту пытался понять что там поменялось

Максим
07.12.2017
07:10:16
https://play.golang.org/p/p1z2gstFlB

Pawel
07.12.2017
10:09:37
Прошу умного объяснить следующий феномен работы гориллы вебсокет. Есть объект типа conn *websocket.Conn, который используется для комуникаций. Если писать в него так w, _ := conn.NextWriter(websocket.TextMessage) w.Write(message) , то я вижу посылки в хроме (во вкладке DevTools - Net - Frames). А если так - conn.WriteJSON(data) - то ни хера не вижу. Вот почему так, а?

Pawel
07.12.2017
10:13:32
конечно, это в данном случае по фигу

ainu
07.12.2017
10:18:31


у WriteJSON возвращается err1 который пробрасывается из маршалера

там и нужно смотреть

err = conn.WriteJSON(data) fmt.Println(err)

Pawel
07.12.2017
10:20:42
я не из колхоза светлый путь тебе пишу, у меня все ошибки проверяются. нет там ни каких ошибок и до клиентского приложения на Elm-е жсон нормально доходит - вот в чом цимес

Google
Pawel
07.12.2017
10:21:23
не пойму почему посылок нет в DevTools

ainu
07.12.2017
10:21:30
По диагонали читается так: func WriteJSON(){ тут_работает_Вася_энкодер(); ошибка ещё ошибка если ошибка { ошибка 1 } ошибка 2 }

что именно

Pawel
07.12.2017
10:22:21
nil

ainu
07.12.2017
10:23:45
а попробуй так

создай какойнибудь writer например текстовый файл

import ( "encoding/json" ) json.NewEncoder( ТУТWriter ).Encode(data ) //тут data которая в JSON идет

чтобы понять что вообще json NewEncoder шлет

алсо для JSON вроде как не нужно предварительно вызывать nextwriter

он сам вызывает его

в тестах у себя они не делают NewEncoder



Pawel
07.12.2017
10:30:08
лана, ща попробуй 1) в файл 2) без NextWriter

Вобщем извиняюсь за беспокойство, парни. Увидел в DevTools результат вызова WriteJSON. Хз шо там было, видимо хром тупил

Страница 692 из 1630