Go 練習問題
Reverse a String in Go
Reverse characters and words correctly, including letters like é.
学べること
- []rune
- Swapping with two indexes
- slices.Reverse
reverse("Go")
- 1
[]runeG o - 2
swapo G - 3
string(runes)"oG"
Reverse runes, not bytes
Go strings are UTF-8, so one character can take more than one byte. Reversing a slice of runes keeps letters such as é intact.
[]rune(text) splits the text into characters. Two indexes walk towards each other and swap the characters they point at. strings.Fields splits a sentence into words and slices.Reverse turns their order around.
重要なポイント
- A character can take more than one byte.
- []rune splits text into characters.
- Two indexes swap from both ends.
実行できる Go のサンプル
Go
main.go
package main
import (
"fmt"
"slices"
"strings"
)
func reverse(text string) string {
runes := []rune(text)
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}
func reverseWords(text string) string {
words := strings.Fields(text)
slices.Reverse(words)
return strings.Join(words, " ")
}
func main() {
fmt.Println(reverse("Go"))
fmt.Println(reverse("héllo"))
fmt.Println(reverseWords("simple fast reliable"))
}
oG
olléh
reliable fast simple練習
サンプルをオンラインコンパイラーで開き、値を変えたり行を追加したりして、実行する前に出力を予想してみましょう。次に、わざとコードを壊してコンパイラーのメッセージを読んでみてください。
このレッスンを終えましたか?
学習済みにすると進み具合を記録できます。
進み具合はこのブラウザーに保存されています ログインすると、どのデバイスでも引き継げます。
チャレンジで練習する
このレッスンの内容を使って実際の問題を解きましょう。各チャレンジはブラウザで動き、すぐにテストされ、AI のレビューも受けられます。
すべてのチャレンジ