Not necessarily. A string in C is usually a char. If you have a struct with a char and you copy it, you copy the pointer to the backing memory. This is analogous to Go which also has a String be a pointer to the heap, but the behavior is different.
Go’s String is a char* that behaves like a char[] when copied.
> Go’s String is a char* that behaves like a char[] when copied.
Uhh, no. A go string is (effectively) a pointer to an immutable string of characters. When you do a = b, both a and b point to the same string (i.e. each is its own string struct, containing a pointer to the exact same array of character data).
But if you try to get a byte[] from it, THEN it makes a copy.
Go’s String is a char* that behaves like a char[] when copied.