Go言語入門#7

5552 ワード

文字列

func main() {
	poet1 := "죽는 날까지 하늘을 우러러\n한 점 부끄럼이 없기를,\n잎새에 이는 바람에도\n나는 괴로워했다."
	poet2 := `죽는 날까지 하늘을 우러러
한 점 부끄럼이 없기를,
잎새에 이는 바람에도
나는 괴로워했다.`

	fmt.Println(poet1)
	fmt.Println(poet2)
}
文字列の使用
  • "~":行ごとに1行文字(n)
  • を使用する必要があります.
  • ~:実際に入力を実行すればよい
    backquoteでは、
  • がアルファベット順に出力されることに注意してください.

    文字列の順序


    文字単位で出力
  • 英字:1 bytes
  • ハングル文字:3 byte
    len(str)->戻りバイト長
  • だからlen(「Hello World」)は8ではなく12です.
    だからlenを使ってforゲートを巡るわけにはいかない!(3バイトハングル文字分離)

    []タイプをruneに変換して巡回する

    func main() {
    	str := "Hello 월드"
    	arr := []rune(str)
    
    	for i := 0; i < len(arr); i++ {
    		fmt.Printf("타입:%T 값:%d 문자값:%c\n", arr[i], arr[i], arr[i])
    	}
    }
    /*
    타입:int32 값:72 문자값:H
    타입:int32 값:101 문자값:e
    타입:int32 값:108 문자값:l
    타입:int32 값:108 문자값:l
    타입:int32 값:111 문자값:o
    타입:int32 값:32 문자값: 
    타입:int32 값:50900 문자값:월
    타입:int32 값:46300 문자값:드
    */
  • rune:int 32の別名タイプ
  • []rune:各グリッド4バイトの動的配列
    💡注意!静的配列として宣言できません!(ex- arr := [8]rune(str) )
  • 文字列->[]runeタイプに変換:4バイトごとの配列
  • ぐるりと回る

    func main() {
    	str := "Hello 월드"
    
    	for _, v := range.str {
    		fmt.Printf("타입:%T 값:%d 문자값:%c\n", v, v, v)
    	}
    }
    
    //결과는 위와 동일
  • range:for文に書き込む
  • range配列または文字列:最初のインデックス、2番目のコロン
  • 文字列構造


    goでは、代入演算子が右側のメモリ領域を左側の領域にサイズ別にコピーします.
    ただし、文字列については?
    文字列は、メモリ領域自体ではなく、メモリ領域の開始アドレスを持つポインタの概念です.
    したがって、実際のデータ(文字列)の長さに関係なく8バイトに固定して代入演算を行うことができる

    文字列は変更されません


    不変
    ->文字列の一部のみを変更することはできません!
    var str string = "Hello World"
    str = "How are you?"  //전체 변경 가능
    str[2] = 'a' //이렇게 일부만을 바꿀 수는 없다 -> 에러 발생
  • 文字列が合成されると、新しい文字列が生成されます.
    例えば、str 2を既存のstr 1に貼り付けるとしても、
    使用を続けるのではなく、既存のstr 1スペースを新しいスペースに保持します.