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

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

Kirill
06.12.2017
17:46:11

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

Google

Aleksandr
06.12.2017
17:48:10
Всем добрый вечер! С какой книги начать изучение языка?
спасибо, сейчас перечитаю, посмотрю что да как
с tour of go
tour.golang.org??

Kirill
06.12.2017
17:48:53

Rail
06.12.2017
17:49:20

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

Rail
06.12.2017
17:59:45

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
я уже с ума начал сходить, почему стандартный маршал в сендбоксе работает, а в проекте не тот тип ошибки
кто-же знал что они дефолтные будут подавлять ?
в json в смысле
и это не другой пакет, это другой тип
type Test struct {
FirstName null.String
}
далее через стандартный анмаршел

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

Александр
06.12.2017
18:12:00
еще и в цикле
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

Vladislav
06.12.2017
22:10:19

Stanislav
06.12.2017
22:11:49

Максим
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)
лишнее вырезал.
Очищается ли нормально память в таком случае?

Aleksandr
06.12.2017
22:48:28

Максим
07.12.2017
05:48:44

Dmitry
07.12.2017
05:52:17

Максим
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]

Максим
07.12.2017
05:59:20

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

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

ainu
07.12.2017
07:09:15

Максим
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) - то ни хера не вижу.
Вот почему так, а?

Andrew
07.12.2017
10:13:10

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. Хз шо там было, видимо хром тупил