golang基礎小記(3)——文字タイプ(byteとrune)と文字列修正
6209 ワード
byteとruneタイプ
2つの文字タイプ:
uint8
タイプ、またはbyteタイプと呼ばれ、ASCII
の文字を表します.rune
タイプで、UTF-8
を表し、本質はint32
タイプである.rune
タイプは、中国語、日本語などの複合文字を処理するために使用されます.package main
import "fmt"
func main() {
s := "wo ai "
// len(s) s ,
fmt.Println(len(s)) // 12
// len(s) , , ( 3~4 , )
for i := 0; i < len(s); i++ { //byte
fmt.Printf("%v(%c) ", s[i], s[i])
}
fmt.Println()
fmt.Printf("%T
", s[0]) // uint8
// , rune , int32
c := '1'
fmt.Printf("%T
", c) // int32
// range
for _, r := range s { //rune
fmt.Printf("%v(%c) ", r, r)
}
}
出力:12
119(w) 111(o) 32( ) 97(a) 105(i) 32( ) 228(ä) 184(¸) 173() 229(å) 155(›) 189(½)
uint8
int32
119(w) 111(o) 32( ) 97(a) 105(i) 32( ) 20013( ) 22269( )
文字列の変更
文字列の下部はbyte配列であるため、[]byteまたは[]runeタイプと相互変換することができる.文字列は修正できません.まず変換を行い、修正してから
string
に変換する必要があります.いずれの変換でも、メモリが再割り当てされ、バイト配列がコピーされます.コードの例: s2 := "ai "
//
// []byte
byteS2 := []byte(s2)
// []rune
runeS2 := []rune(s2)
byteS2[1] = 'h'
runeS2[3] = ' '
// string ,
fmt.Println(string(byteS2)) // ah
fmt.Println(string(runeS2)) // ai
参照先:https://www.liwenzhou.com/posts/Go/02_datatype/