а как? 🤷♂️
Я могу придумать, как) Но тут дело ни в этом. Скорее в том, что это структуры, которые внутри себя имеют указатели на какой-то участок памяти.
Никто не запрещает, берешь поинтер через ансейф и сравниваешь)
А-хах. Да, логично. Но я имею ввиду от чего пляшет разделение типов данных на comparable и not comparable?
или через DeepEqual
Так не интересно, а потроллить немног? )
Да, пробовал так.
Для машины - можно ли взять два участка памяти и сравнить их, т.е. те-же слайсы, условно можно сравнить взяв указатели на данные и длинну и сравнить через memcmp, аналогично с структурами без поинтеров внутри, но все ломается как только там оказываются поинтеры. Поэтому придется писать сравнивалки руками\сравнивать через DeepEqual
А string имеет внутри себя указатель, и можно ли string сравнивать?
Я думаю да. Например, вот устройство строки: 1. ptr 2. len Алгоритм: 1. Берем указатель. 2. Считываем байты по указанному адресу в буфер. 3. Со второй строкой проделываем аналогичные действия. 4. По байтам сравниваем.
https://golang.org/pkg/reflect/#StringHeader
Обсуждают сегодня