Herman
Проверить просто - попытаться взять cap
Herman
Строка это указатель на байт и длина
Илья
Илья
https://github.com/golang/go/blob/master/src/runtime/string.go
боюсь делать конкатенации, столько операций внутри
Anonymous
Herman
https://pkg.go.dev/reflect?utm_source=godoc#StringHeader
Herman
Ой
Herman
Anonymous
Igor
What is a string?
Let’s start with some basics.
In Go, a string is in effect a read-only slice of bytes. If you’re at all uncertain about what a slice of bytes is or how it works, please read the previous blog post; we’ll assume here that you have.
Igor
https://go.dev/blog/strings
Igor
наверно Роб Пак знает что такое Стринг в ГО
Anonymous
Александр
подскажите создал файл с тестами, но при запуске кода пишет что функция не определена, когда IDE не ругается на это, искал решение, пишут что работа с GOPATH уже устарела и все используют GO modules в какую сторону мне идти разбираться?
Herman
Herman
Это для упрощения сказано
Herman
Был бы это просто слайс байт, то было бы проблематично столько оптимизаций написать
Herman
Это совершенно другой тип
𝙲𝚊𝚝𝚒𝚘𝚗
Илья
жесть, итерация через unsafe
Herman
Илья
да
Herman
))
Herman
Сам выше скинул ссылку на рантайм
Herman
Где это другая структура
Alexandr
Herman
Herman
Пермалинк на го гитхаб
Илья
Пруф
там указатель на первый элемент в слайсе.........byte
Илья
Илья
посмотри итерацию
Alexandr
Там в структуре *byte, если я верно помню
Herman
Это не []byte
Herman
Есть разница между структурой с двумя интами и указателем и структурой с одним интом и указателем?
Alexandr
Там поинтер и длина
Огонь, это отлично объясняет многое. Это ведь действительно не *[] byte
Herman
Herman
А что в раньайме там это все фигня
Илья
если есть указатель на первый элемент в массиве/слайсе, то ты можешь получить другой через uintptr(&slice[0]) + uintptr(1)
Herman
Herman
Там даже есть такая интересная функция
Илья
Herman
slicebytetostringtmp
Herman
Интеремно, зачем Кастить слайс байт в слайс байт
Herman
Илья
Интеремно, зачем Кастить слайс байт в слайс байт
Some internal compiler optimizations use this function Used for m[T1{... Tn{..., string(k), ...} ...}] and m[string(k)] where k is []byte, T1 to Tn is a nesting of struct and array literals.//
Herman
Илья
ну структура строки хранит указатель на первый элемент в слайсе
Илья
вопросы?
Herman
Если я скастил слайс байт в другую структуру то эта структура стала слайсом байт?
Herman
Ну и?
Илья
Илья
copy()
Herman
В рантайме это []byte или другая структура?
Herman
Любая другая струткура кроме []byte слайсом байт не является
Илья
но может на нее указывать
Herman
А в блоге можно что угодно писать
Herman
Herman
Указывать может что угодно на что угодно
Herman
Илья
Илья
ладно, закончим дискуссию
Илья
кстати, что за tmpBuf?
Herman
Илья
буфер для оптимизации? например если много операций
Herman
Но по-моему если в рамках 32 байт происходит например конкатенация
Herman
То нет аллокации
Herman
Если больше, то уже с аллокацией
Илья
Depash
буфер для оптимизации? например если много операций
Если я правильно понял, то буфер используется при вызове функции конкатенации, в случае если строка результирующая не утекает (то есть не нужно ее передавать дальше области видимости вызывающей функции, так как судя по всему буфер выделяется именно на стеке) и при этом строка меньше или равна 32 байтам.
Tony
Подскажите, а как организовать работу только оного экземпляра пользователя в restapi, что бы при новом входе отваливалось соединение раннего входа?
Александр
приветствую, ребят подскажите ка кможно выпорлнить такую команду через exec.Command: kill $(ps aux | grep win.exe | awk '{print $2}')
Александр
че то не получается
Несин Данила
А что хочешь сделать?
Rama
Есть кто пользуется Neovim? Как установить lsp(golps) на neovim