昨日GolangとブラシLeetCodeのコードでは、コンパイル時にエラーが表示され、元のイメージは、おそらくunicode.IsUpper()この関数は、ルーン型で使用されていることを意味し、傍受しなかったし、バイト型を使用することはできません。その後、一連の情報とコードのテストプロセスは、結論の衝撃の後 - golangはchar型を持っていない、ルーンはint32に相当し、バイトはuint8に相当します。
最初にテストコード
// 文字列探索の文字型をテストする
package main
import (
"fmt"
"reflect"
"unicode"
)
func main() {
s := "Abcde"
for _, v := range s {
fmt.Println(unicode.IsUpper(v))
fmt.Println(reflect.TypeOf(v))
}
fmt.Println(unicode.IsUpper(int32(s[0])))
fmt.Println(reflect.TypeOf(s[0]))
fmt.Printf("%d", s[0])
}
ここでは主にgolangのリフレクション機構を使ってreflect.TypeOf関数を呼び出し、for ... range ...とs[0]を直接呼び出し、最終的にfor rangeはrune型、s[0]はbyte型、リフレクションはruneがint32型、byteがuint8型であることがわかりました。