blog

golangのruneとbyte

最初にテストコードを貼り付けます。 // 文字列トラバーサル文字型のテスト パッケージ main インポート func main() { s := "...

May 26, 2020 · 1 min. read

昨日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型であることがわかりました。

Read next

ShardingSphere 4.x データ・シャーディング

単一のデータノードに集中的にデータを格納するという従来のソリューションでは、パフォーマンス、可用性、運用・保守コストの面で、インターネットの膨大なデータシナリオに対応することは困難です。 性能の面では、ほとんどのリレーショナルデータベースはB+木タイプのインデックスを使用しているため、データ量が閾値を超えた場合、インデックスの深さが増加するとディスクアクセスのIO回数も増加し、クエリ性能の低下につながります。

May 26, 2020 · 4 min read