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/