In Go, string effectively serves as a read-only slice, if we are talking about bytes.
ReadOnlySpan<T> in C# is great! In my opinion, Go essentially designed in “span” from the start.
ReadOnlySpan<T> in C# is great! In my opinion, Go essentially designed in “span” from the start.
Interesting approach regarding using strings as containers for raw bytes, but when you create one over a []byte I believe it makes a copy almost always (always?) so you can’t get a zero-cost read-only view of the data to pass to other functions.
One can use unsafe for a zero-copy conversion, but now you are breaking the semantics: a string becomes mutable, because its underlying bytes are mutable.
Or! One can often handle strings and bytes interchangeably with generics: https://github.com/clipperhouse/stringish
One way that you will find it is that they used to be called open arrays in some of them.