Go言語における文字列はUTF-8のバイト列を保持します。また、Unicodeの1符号位置に対応するデータ型としてruneというものが用意されており、これは32ビット整数と同じものです。他の言語でいうchar型にあたります。 Rustでも類似の形です。つまり、文字列型はUTF-8のバイト列を保持し、Unicodeのスカラー値に対応する型としてcharが定義されています。(ここでわざわざ「スカラー値」といい「符号位置」としていないのはRustのドキュメントがそうしているせいで、まあほぼ同じようなものですが、サロゲート上位下位の範囲の値を含まない点だけが違います) こうなるとUTF-16の出る幕がない感じになってきます。今後、JavaやC#のように「文字列はUTF-16、char型は16ビット」というものから、こちらの方式へシフトしてくるのでしょうか。JavaなどはUnicodeのBMPにしか