ルーン文字とは何ですか?質問する

ルーン文字とは何ですか?質問する

Go におけるとは何ですかrune?

グーグルで調べたのですが、Golangruneには は のエイリアスであるint32と 1 行だけ書かれています。

しかし、大文字と小文字を入れ替えるなど、整数があらゆるところで使用されているのはなぜでしょうか?

以下は関数 swapcase です。 および<=とは何ですか-?

そして、なぜ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)
}

runeこれは、入れ替えられた文字列を返すことができるようにマッピングされていると理解しています。しかし、ここでどのように機能するかはstring正確にはわかりません。runebyte

ベストアンサー1

ルーン リテラルは単なる 32 ビットの整数値です(ただし、型指定のない定数なので、型は変わる可能性があります)。これらは Unicode コードポイントを表します。たとえば、ルーン リテラルは'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'))
}

Unicodeマッピングを見れば、それが明らかになるはずです。アスキーその範囲内です。さらに、32 は実際には文字の大文字と小文字のコードポイント間のオフセットです。したがって、32に を加えると'A'になり'a'、その逆も同様です。

おすすめ記事