
Andrew
02.09.2017
06:31:40
Куда файлы положил?

/dev/null
02.09.2017
06:33:25
Models (пакет utils) main (сюда нужно получить) utils (это пакет для extract)

Andrew
02.09.2017
06:34:20
Файлы где лежат?

/dev/null
02.09.2017
06:35:22

Google

Andrew
02.09.2017
06:37:51
Если я всё правильно понял, и GOPATH = ~/dev/VZR_STAT, то import models/utils, затем utils.<твоё добро>
Только с большой буквы назови то, что хочешь сделать доступным из других пакетов.

/dev/null
02.09.2017
06:40:25
Вы не совсем поняли мой вопрос, мне нужно понять как передать значения структуре из одного пакета и получить его в другом., про то как импортить я понимаю

Andrew
02.09.2017
06:41:48
<твоя переменная> = <твой пакет>.<переменая в другом пакете>
вроде всё стандартно

Slach
02.09.2017
06:43:24
Тулза для тестирование
Locust.io

/dev/null
02.09.2017
06:47:33
Сейчас на пастебин кину
https://pastebin.com/qXep7XXt
нужно в a.Name получить значения
Наверное я что-то еще не понял как работать со структурами, решим массив вернуть.

Andrew
02.09.2017
07:25:48

/dev/null
02.09.2017
07:26:17

Google

Andrew
02.09.2017
07:26:56
с большой буквы нужно называть переменные, которые хочешь сделать доступными из других пакетов
тогда utils.A было бы доступно

Akmurat
02.09.2017
15:31:42
Кто знает если книга Building Microservices with Go на русском?

dukeBarman
02.09.2017
15:33:55
Врядли

Valentin
02.09.2017
15:34:28
Читайте в оригинале

Максим
02.09.2017
16:36:11
Подскажите, как можно перебрать слайс по ссылке?
Типа такого:
import "fmt"
func main() {
a := new([10]int)
for _,v := range a {
fmt.Println(v)
}
}
Ошибка: cannot range over a (type *[10]int)

Diasko
02.09.2017
16:37:03
for _,v := range *a {
fmt.Println(v)
}

Максим
02.09.2017
16:38:19
panic: runtime error: invalid memory address or nil pointer dereference
на эту строку и ругается, где range *

Олег
02.09.2017
16:39:50
Указатель на слайс нулевой, range тут ни при чем :)

Diasko
02.09.2017
16:41:10
https://play.golang.org/p/R70EoOP9xi ошебок нету

Ivahaev
02.09.2017
18:03:49
Второе — new возвращает указатель на созданный элемент.
Вероятно, тут попутано с make?

Peter
02.09.2017
19:23:40
https://play.golang.org/p/VCQgsaEb3c код без изменений, оба варианта работают и вообще-то new([10]int) создаёт не слайс, а ссылку на массив из 10 элементов
И вообще, может это опять тот чувак вернулся и тролит глупыми вопросами

Максим
02.09.2017
19:59:15
По ссылке сделать range можно?
Вот в чем вопрос...

Nikolay
02.09.2017
20:02:07
можно
слайс это и так ссылка всегда
хоть по ссылке, хоть без

Максим
02.09.2017
20:05:38
Со звездочкой не работает... Что массив, что слайс

Google

Nikolay
02.09.2017
20:08:08
ну потому что массив это уже указатель (и слайс)
и через new и через make и через var x []Type

Максим
02.09.2017
20:09:15
Тоесть, я попытался сделать ссылку на ссылку?
И звездочка там вообще не нужна

Nikolay
02.09.2017
20:09:48
хуже, ты попытался в range взять значение первого элемента
&var - взятие ссылки, *var - получение значения по ссылке
Ссылка на ссылку будет &([]Type{....})

Максим
02.09.2017
20:11:50
Ну, я все равно не оч понял) но спасибо, попробую разобраться

Nikolay
02.09.2017
20:12:27
если коротко - убрать надо звездочку в range

Vasily Romanov
02.09.2017
20:25:26
https://blog.golang.org/go-slices-usage-and-internals
вот тут много про слайсы написано

/dev/null
03.09.2017
05:36:48
Здрасти

/dev/null
03.09.2017
05:36:53
Помогите пожалуйста
https://ru.stackoverflow.com/questions/713777/golang-xml-encoding-windows-1251

Vasily Romanov
03.09.2017
06:00:42
А в чем отличие от того чтобы парсить сконверченный файл ?
Есть вариант заменить только кодировку в хедере ( если только контент в 1251 ), а остальное интерпретировать уже после парсинга в слайс байт. Но это костыль

/dev/null
03.09.2017
06:08:57

Vasily Romanov
03.09.2017
06:09:10
ну я понимаю

/dev/null
03.09.2017
06:09:26
Пересобрал в ручную, указал Utf8 тогда норм парсит

Vasily Romanov
03.09.2017
06:09:33
после конвертации кодировки парсить - не подходит ?

Google

Vasily Romanov
03.09.2017
06:09:43
ты же читаешь и так в память его весь
в смысле после конвертации файла

/dev/null
03.09.2017
06:10:05

Vasily Romanov
03.09.2017
06:10:34
утф для хмл - стандарт, это не единственный парсер который откается с другой кодировкой работатть

/dev/null
03.09.2017
06:11:02

Admin
ERROR: S client not available

Vasily Romanov
03.09.2017
06:11:21
тогда гугли по convert encoding
или где-т ов чате я видел упоминания iconv

/dev/null
03.09.2017
06:11:41
да уже пальцы стер от Клавы, чет вообще не могу понять

Vasily Romanov
03.09.2017
06:13:16
а файл реально в какой кодировке?
не то что там написано в заголовке, а по факту

/dev/null
03.09.2017
06:13:57

Vasily Romanov
03.09.2017
06:14:09
ну конверть

/dev/null
03.09.2017
06:14:13
Я чуть не заплакал когда увидел)

Vasily Romanov
03.09.2017
06:15:32
да брось, обычное дело

Igor
03.09.2017
06:25:21
Был у меня подобная проблема. Я решил ее путем конвертации cp1251 -> utf-8, затем я просто вырезал инструкцию <?xml version="1.0" encoding="windows-1251"?> перед вызовом xml.Unmarshal ... Правда это было давно. Такой костыль

/dev/null
03.09.2017
06:26:51

Igor
03.09.2017
06:27:55
я вырезал регуляркой с тем условием, что инструкция <?xml .... был в одну строку:

Google

Igor
03.09.2017
06:28:04
import "golang.org/x/net/html/charset"
...
bodyReader, err := charset.NewReader(resp.Body, resp.Header.Get("Content-Type"))
if err != nil {
log.Fatal(err)
}
body, err := ioutil.ReadAll(bodyReader)
if err != nil {
log.Fatal(err)
}
...
// вырезаем инструкцию <?xml version="1.0" encoding="windows-1251"?>
// - мешает обработке
re := regexp.MustCompile((<\?xml\s+.+?\?>))
bodyText := re.ReplaceAllString(string(body), "")
var checkResult CheckResult
xml.Unmarshal([]byte(bodyText), &checkResult)
if err != nil {
log.Fatal(err)
}
log.Println(checkResult)

/dev/null
03.09.2017
06:28:46

Igor
03.09.2017
06:29:35
ну там быди небольшого размера xml-ки, так что я решил не заморчиваться

/dev/null
03.09.2017
06:30:22
у меня 140 штук на 500мб

Igor
03.09.2017
06:31:06
уууу, по 500 мб... надо что-то получше придумать тогда :(

/dev/null
03.09.2017
07:27:14
Да, написал метод для перекодировки 1251 в utf8, но работает если только строка <?xml version="1.0" encoding="windows-1251"?> отсутствует

ros
03.09.2017
07:33:04
если файлами лежат кортеж cat | sed | iconv

/dev/null
03.09.2017
07:40:18

ros
03.09.2017
07:41:33
ну и в цикл по ls обернуть

/dev/null
03.09.2017
07:43:36

ros
03.09.2017
07:48:23
ща сочиню кортеж

/dev/null
03.09.2017
07:50:31

ros
03.09.2017
07:52:54
for OUTPUT in $(ls *.xml)
do
cat $OUTPUT |\
sed 's/encoding="windows-1251"/encoding="utf-8"/' |\
iconv -f cp1251 -t utf8 -o $OUTPUT.utf8.xml
done
более безопасный вариант с однократной заменой
for OUTPUT in $(ls *.xml)
do
cat $OUTPUT |\
sed '0,/encoding="windows-1251"/s/encoding="windows-1251"/encoding="utf-8"/' |\
iconv -f cp1251 -t utf8 -o $OUTPUT.utf8.xml
done

/dev/null
03.09.2017
08:07:03
Не совсем понял

ros
03.09.2017
08:07:37
если однократная операция по чему бы и нет

/dev/null
03.09.2017
08:08:38