unicode
Go 言語開発において、文字列の切り取りは高頻度の操作です。特に中国語と英語が混在する処理を行う場合は、エンコーディング問題に特に注意する必要があります。本稿では、Go 言語における 4 つの主流な文字列切り取り方案を体系的に整理し、コード例と合わせて技術ポイントを解説します。
Unicode 安全処理方案
[]rune 変換を通じて文字レベルの安全な切り取りを実現します。
go
func main() {
str := "Hello, 世界!"
runes := []rune(str)
// 文字レベルの安全な切り取り
sub3 := string(runes[7:9])
fmt.Println("安全に中国語を切り取り:", sub3) // 出力:世界
}技術比較
| 方案 | 時間計算量 | メモリオーバーヘッド | 適用シーン |
|---|---|---|---|
| バイトスライス | O(1) | 低 | 純粋な ASCII 文字列 |
| []rune 変換 | O(n) | 高 | マルチバイト文字を含む文字列 |
