@proGO

Страница 919 из 1674
Anton
12.10.2017
22:16:15
напомните пожалуйста, строки ведь по значению в функцию передаются (в отличие от слайсов)? Почему тогда почти во всех стандартных пакетах в интерфейсах string а не *string - это же кругом лишние копирования получается.

Daniel
12.10.2017
22:20:43
Строка - это указатель на массив байт

Anton
12.10.2017
22:20:45
нашел ответ: "Immutability means that it is safe for two copies of a string to share the same underlying memory, making it cheap to copy strings of any length." т. е. строки передаются в функцию так же как и слайсы, с копированием структуры с указателем на данные, но без копирования данных.

Vladimir
12.10.2017
22:58:34
нашел ответ: "Immutability means that it is safe for two copies of a string to share the same underlying memory, making it cheap to copy strings of any length." т. е. строки передаются в функцию так же как и слайсы, с копированием структуры с указателем на данные, но без копирования данных.
почему то мне кажется что строка - это внутри вообще слайс байтов, потому как я не смог определить сколько превращение []byte(string) занимает в наносекундах 8) может кто другой сможет

Google
Vladimir
12.10.2017
23:00:02
По идее []byte(string) должен быть бесплатным, пока ты не начнешь его мутировать

Anton
12.10.2017
23:00:37
copy on write?

Vladimir
12.10.2017
23:00:49
Вроде того

Alexander
13.10.2017
03:01:29
А более кошерно делать не []byte(string) , а []rune(string) даже. Накладные расходы на это мизерные, в строке же не "Война и мир" в четырех томах, обычно

Vladimir
13.10.2017
03:38:32
А более кошерно делать не []byte(string) , а []rune(string) даже. Накладные расходы на это мизерные, в строке же не "Война и мир" в четырех томах, обычно
все зависит от цели ... кому то получить символ а кому то хочется работать с байтом пусть и не единственным символа, заодно разобраться с кодировкой UTF-8 ///

ros
13.10.2017
05:05:07
/report ещё у одного банка надо отбирать лицензию а наиля этого в бан

Vladimir
13.10.2017
05:11:17
Потому что в доке так написано.
будем ванговать на пару ?

Robert
13.10.2017
05:21:44
Коллеги вопрос. Делаем приложение на go. Кровавый энтерпрайз. В документации руковдоство администратора, необходимо описать все коды ошибок. То есть по сути все наши var (ErrChegoToTamFailed = errors.New("ERR-001: Содержат код и описание") ). Можно дискутировать делать ли отдельный тип для собственных ошибок, вопрос не в этом.

Если мы эти ошибки как и положено в начале каждого файла/пакета объявим

как бы это все лихо выгрузить в документацию? Выцепить эти встрочки? какие есть идеи? какой нить линуксовой command line тулзой?

Наиль, это называется беру огонь на себя ?

Google
Alexey
13.10.2017
05:23:48
Robert
13.10.2017
05:34:34
руководство администратора по ГОСТ

комментировать код мы комментируем, ибо старые и трюки у нас старые

и нужно быстро взять и их всех файлов скопипастить в Word документ.

godoc предлагали конеш. Не прокатило )

Artem
13.10.2017
05:48:56
Грепнуть по маске с флагами -rl и > err_descr

Не получится?

Robert
13.10.2017
05:52:35
попробую. спс

Vladimir
13.10.2017
06:02:54
как бы это все лихо выгрузить в документацию? Выцепить эти встрочки? какие есть идеи? какой нить линуксовой command line тулзой?
я на Windows подобные задачи решаю как раз на GO ? в виде парсера исходных файлов, и вообще различных файлов! Даже постоянный трансформ Win1251-UTF-8 уже стал обычным

Robert
13.10.2017
06:03:53
? Inception

Vladimir
13.10.2017
06:06:03
? Inception
задача внутренняя програмерская вы сами то верите в парсер на GO? А GoDoc работает с ВЕРНОЙ стилистикой ...чтоб получать вразумительные результаты!

Maxim
13.10.2017
07:04:36
А расскажите, уважаемые, новичкам - вот если мне надо скажем считать файл построчно в массив, то как это принято делать?

У меня есть тяжкое предчувствие, что как в Си. Скажите, что это не правда.

Ilya
13.10.2017
07:06:24
ioutil.ReadFile вроде бы возвращает массив байт

Но можно и как в C

Maxim
13.10.2017
07:06:59
Да мне бы как у людей...

Ну там, чтобы какая-нибудь коллекция строк вернулась что-ли...

Ilnar
13.10.2017
07:07:17
Ilya
13.10.2017
07:07:37
он хочет строки в массив
Для этого есть strings.Scanner

Google
Ilya
13.10.2017
07:08:25
Хотя нет, что-то другое, но тоже есть

Maxim
13.10.2017
07:11:10
Наверно меня больше интересует вопрос создания массива строк неизвестной заранее длины.

или к слайсу-таки можно аппендить сколько влезет?

Получается, что слайс взятый от аррея и сделаный через мейк - это разные по сути слайсы?

Daniel
13.10.2017
07:14:22
Одинаковые

Maxim
13.10.2017
07:14:51
как тогда append() сработает на слайсе от аррея?

у него длина фиксированная

Daniel
13.10.2017
07:15:29
Любой слайс - от массива

Maxim
13.10.2017
07:15:57
ага, и как тогда туда добавляется неизвестное количество элементов?

то есть я читаю

The capacity of the slice is the number of elements in the underlying array starting from the index from which the slice is created.

Daniel
13.10.2017
07:17:04
Что возвращает append помните?

Maxim
13.10.2017
07:17:16
еще нет, только дочитал :)

в смысле аппенд не изменяет исходный массив?

Daniel
13.10.2017
07:17:30
Ну вот дочитайте

Daniel
13.10.2017
07:17:42
Там прям написано

Maxim
13.10.2017
07:19:14
прочитал

Меняет
ты тоже прочитай, так как исходный массив не меняется

Евгений
13.10.2017
07:20:27
А более кошерно делать не []byte(string) , а []rune(string) даже. Накладные расходы на это мизерные, в строке же не "Война и мир" в четырех томах, обычно
почему? по идее string это почти []byte внутри та же последоательность байтов в UTF-8. А []rune это слайс int32, который не только будет 2-4 раза больше, но его еще и сконвертировать надо - перекодировать utf-8 в unicode code point.

Google
Vladimir
13.10.2017
07:20:58
Daniel
13.10.2017
07:21:30
Он меняет, если есть capacity
Аппенд не трогает массив. Но может создать новый

Maxim
13.10.2017
07:21:44
вы уж определитесь :)

Евгений
13.10.2017
07:21:47
ты тоже прочитай, так как исходный массив не меняется
пока влезает, если не влезает, то нужно удлинять массив. Тут будет создание нового масива - выделение памяти по новому адресу + копирование

Maxim
13.10.2017
07:22:57
сорри гайз, что я троллю местами,

Admin
ERROR: S client not available

Maxim
13.10.2017
07:23:07
просто без этого фиг кто ответит :)

правильно я понимаю, что со слайсами большая засада, если где-то брать адреса у элементов массивов?

Евгений
13.10.2017
07:25:30
?

Maxim
13.10.2017
07:25:51
ну то есть &a[0] может оказаться разный, скажем, при append'е в цикле

причем, в общем случае, это поводение плохо предсказуемо

Евгений
13.10.2017
07:26:12
а зачем с ними так работать?

Maxim
13.10.2017
07:26:57
ну мало ли

о! да тут еще оказывается и мемори лик можно схлопотать, если вовремя nil не присвоить ... https://github.com/golang/go/wiki/SliceTricks

я просто раньше думал, что Go это такой более правильный Питон

а оказывается это новый Си

Alexander
13.10.2017
07:29:42
Привет всем. Подскажите плиз по поводу cgo (google молчит). Есть сторонняя динамическая библиотека blabla.so и хедер blabla.h. Вопрос: как мне использовать методы этой либы в go? Уже и с флагами #cgo игрался и местоположением либы в системе, ничего не помогает. При билде пишет что не может найти методы из этой либы (например C.BlaBlaMethod() )

Maxim
13.10.2017
07:29:54
Извините, вынужден прервать беседу до вечера...

Alexander
13.10.2017
07:30:59
Или го не цепляет динамические либы?

Alexey
13.10.2017
07:41:01
ну то есть &a[0] может оказаться разный, скажем, при append'е в цикле
a[0] тоже может оказаться разный, если менять значения в массиве:)

Google
Artem
13.10.2017
07:47:12
люди из node.js пришли в чужой огород со своими тяпками https://github.com/mattn/anko

Alexander
13.10.2017
07:47:25
Привет. Посмотри пример https://github.com/rainycape/dl/blob/master/examples_test.go
Да, видел эту либу. Но очень мало инфы по ней. Вы сами ее пробовали?

Плюс у нее последний коммит 3-х летней давности.

Александр
13.10.2017
07:50:09
Да, видел эту либу. Но очень мало инфы по ней. Вы сами ее пробовали?
Пока нет ещё, но предстоит разобраться, тк под видной почти закончено с syscall.NewLazyDLL("какаято.dll")

Artem
13.10.2017
07:55:44
по стилю кода в примерах человек явно из js мира, самый распространенный вариант использованеия js на сервере - nodejs

Alexander
13.10.2017
08:05:13
Пока нет ещё, но предстоит разобраться, тк под видной почти закончено с syscall.NewLazyDLL("какаято.dll")
Если вы собирались использовать ее под виндой, то увы, ничего не выйдет. Она предоставляет интерфейс только для юниксовых систем посредством вызова методов dlopen(), dlsym() и dlclose() из либы dlfcn

Под виндой вроде как может помочь вот это дело https://github.com/dlfcn-win32/dlfcn-win32

Kirill
13.10.2017
08:11:22
Может кто подскажет по работе в гогланде(ide от jetbrains для го) Как одним нажатием добавлять загаловок для комментария? Т.е. // Client <- вот эту штуку с именем ниже type Client interface { authorizeUser(user user.User) (uint64, error) }Может даже плагин какой-то нужен?

Vladimir
13.10.2017
08:12:56
Извините, вынужден прервать беседу до вечера...
ну не повезло узнать как делать ioutil , а затем strings.Split(string(Data),"\n") ?

почему? по идее string это почти []byte внутри та же последоательность байтов в UTF-8. А []rune это слайс int32, который не только будет 2-4 раза больше, но его еще и сконвертировать надо - перекодировать utf-8 в unicode code point.
сорьки символы как байты в UTF-8 бывают только в частных случаях (от 1 до 128), а почти всегда это цепочка байтов причем старший разряд у одного из байтов разделяет цепочку на руны , а руна это числовое значение цепочки байтов (без учета разделяющего бита)

Евгений
13.10.2017
08:49:57
сорьки символы как байты в UTF-8 бывают только в частных случаях (от 1 до 128), а почти всегда это цепочка байтов причем старший разряд у одного из байтов разделяет цепочку на руны , а руна это числовое значение цепочки байтов (без учета разделяющего бита)
Не совсем. Даже в самом простом случае, если были использованы символы только acsii набор latin-1 со значениями 0..127, получается, что у строки 1 байт на символ, а у руны - 4. Если в строке где-то русская буква "Ы", то в этом месте будет записано 2 байта D1 8B, а в руне будет 4 байта юникод пойнта 00 00 04 4B. То есть без посимвольной перекодировки одного в другое совсем никак. Даже длину результирующего массива нельзя узнать заранее - разве, что она будет меньше чем len(s)*4. А в случае string -> []byte просто копирование массива - одна радостная ассемблерная инструкция.`rep movsb/w/d/q`

Vladimir
13.10.2017
08:51:17
Не совсем. Даже в самом простом случае, если были использованы символы только acsii набор latin-1 со значениями 0..127, получается, что у строки 1 байт на символ, а у руны - 4. Если в строке где-то русская буква "Ы", то в этом месте будет записано 2 байта D1 8B, а в руне будет 4 байта юникод пойнта 00 00 04 4B. То есть без посимвольной перекодировки одного в другое совсем никак. Даже длину результирующего массива нельзя узнать заранее - разве, что она будет меньше чем len(s)*4. А в случае string -> []byte просто копирование массива - одна радостная ассемблерная инструкция.`rep movsb/w/d/q`
согласен что дополнение нулями будет до int32! То есть приведение к руне - более дорогая оперция по отношению к памяти! Только в операциях на [N]byte (фиксированных массивов байт) мы достигаем быстродействия Си, но и само приведение к массиву дорого , поэтому всем искать компромисс!

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