1. ホーム
  2. 行く

[解決済み】ルーンとは何ですか?

2022-04-03 08:42:26

質問

とは何ですか? rune を使用することはできますか?

ググってみたけど、Golangは1行にしか書いてないね。 rune のエイリアスです。 int32 .

しかし、どうしてケースを入れ替えるように整数が使われまくるのでしょうか?

以下は、関数のスワップケースです。 はすべて何ですか? <=- ?

また、なぜ switch は引数がないのですか?

&& という意味でなければなりません。 そして しかし r <= 'z' ?

func SwapRune(r rune) rune {
    switch {
    case 'a' <= r && r <= 'z':
        return r - 'a' + 'A'
    case 'A' <= r && r <= 'Z':
        return r - 'A' + 'a'
    default:
        return r
    }
}

そのほとんどが http://play.golang.org/p/H6wjLZj6lW

func SwapCase(str string) string {
    return strings.Map(SwapRune, str)
}

これはマッピングだと理解しています runestring で、入れ替えた文字列を返せるようにします。しかし、具体的にどのように rune または byte はここで動作します。

解決方法は?

ルーンリテラルは32ビット整数値です。 ( しかし、それらは型付けされていない定数なので、その型は変更可能です。 ). これらはユニコードのコードポイントを表します。例えば、ルーン文字リテラル 'a' は実際には数字 97 .

したがって、あなたのプログラムは、ほぼ同等です。

package main

import "fmt"

func SwapRune(r rune) rune {
    switch {
    case 97 <= r && r <= 122:
        return r - 32
    case 65 <= r && r <= 90:
        return r + 32
    default:
        return r
    }
}

func main() {
    fmt.Println(SwapRune('a'))
}

ユニコード・マッピングを見れば一目瞭然ですが、これは、以下のものと同じです。 ASCII をその範囲内で使用します。さらに、32は実際にはその文字の大文字と小文字のコードポイント間のオフセットである。そこで 32'A' を取得します。 'a' であり、その逆もまた然りである。