Herman
Проверить просто - попытаться взять cap
Herman
Строка это указатель на байт и длина
Илья
https://github.com/golang/go/blob/master/src/runtime/string.go боюсь делать конкатенации, столько операций внутри
Herman
https://pkg.go.dev/reflect?utm_source=godoc#StringHeader
Herman
Ой
Herman
import "unsafe"? 🤬🤬🤬
А без этого никак
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
наверно Роб Пак знает что такое Стринг в ГО
Александр
подскажите создал файл с тестами, но при запуске кода пишет что функция не определена, когда IDE не ругается на это, искал решение, пишут что работа с GOPATH уже устарела и все используют GO modules в какую сторону мне идти разбираться?
Herman
Это для упрощения сказано
Herman
Был бы это просто слайс байт, то было бы проблематично столько оптимизаций написать
Herman
Это совершенно другой тип
Илья
Был бы это просто слайс байт, то было бы проблематично столько оптимизаций написать
при конвертациях всегда выделяется новый слайс, но структура string хранит только указатель и len
Илья
жесть, итерация через unsafe
Илья
да
Herman
))
Herman
Сам выше скинул ссылку на рантайм
Herman
Где это другая структура
Alexandr
string это []byte или нет?
Неизменяемый [] byte
Herman
Пермалинк на го гитхаб
Илья
Пруф
там указатель на первый элемент в слайсе.........byte
Илья
Илья
посмотри итерацию
Alexandr
Там в структуре *byte, если я верно помню
Herman
я выше кидал
Там поинтер и длина
Herman
Это не []byte
Herman
Есть разница между структурой с двумя интами и указателем и структурой с одним интом и указателем?
Alexandr
Там поинтер и длина
Огонь, это отлично объясняет многое. Это ведь действительно не *[] byte
Herman
Огонь, это отлично объясняет многое. Это ведь действительно не *[] byte
Не, ты что, роб пайк же сказал в блоге что это слайс байт
Herman
А что в раньайме там это все фигня
Илья
если есть указатель на первый элемент в массиве/слайсе, то ты можешь получить другой через uintptr(&slice[0]) + uintptr(1)
Rostislav
Не, ты что, роб пайк же сказал в блоге что это слайс байт
ну не формально это оно и есть же. Он это называл так, чтобы объяснить, скрыв детали, что имхо норм.
Herman
Там даже есть такая интересная функция
Herman
slicebytetostringtmp
Rostislav
Формально как раз нет
ну формально нет. А я говорю не формально
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
Ну и?
Илья
copy()
Herman
В рантайме это []byte или другая структура?
Herman
Любая другая струткура кроме []byte слайсом байт не является
Илья
но может на нее указывать
Herman
А в блоге можно что угодно писать
Herman
Указывать может что угодно на что угодно
Илья
А в блоге можно что угодно писать
а может блог даже и не роб пайк писал...
Herman
да, ну и?
Типы данных разные
Илья
ладно, закончим дискуссию
Илья
кстати, что за tmpBuf?
Herman
кстати, что за tmpBuf?
Могу ошибаться
Илья
буфер для оптимизации? например если много операций
Herman
Но по-моему если в рамках 32 байт происходит например конкатенация
Herman
То нет аллокации
Herman
Если больше, то уже с аллокацией
Depash
буфер для оптимизации? например если много операций
Если я правильно понял, то буфер используется при вызове функции конкатенации, в случае если строка результирующая не утекает (то есть не нужно ее передавать дальше области видимости вызывающей функции, так как судя по всему буфер выделяется именно на стеке) и при этом строка меньше или равна 32 байтам.
Tony
Подскажите, а как организовать работу только оного экземпляра пользователя в restapi, что бы при новом входе отваливалось соединение раннего входа?
Александр
приветствую, ребят подскажите ка кможно выпорлнить такую команду через exec.Command: kill $(ps aux | grep win.exe | awk '{print $2}')
Александр
че то не получается
Несин Данила
А что хочешь сделать?
Rama
Есть кто пользуется Neovim? Как установить lsp(golps) на neovim