Skip to Content

入門Goプログラミング Lesson9(多言語テキスト)から学んだこと

LESSON9 多言語テキスト

文字列変数の宣言

以下、全て等価

place := "abashiri"
var place = "abashiri"
var place string = "abashiri"

文字列中のエスケープシーケンス

memo
`(バッククォート)で囲む

package main

import (
	"fmt"
)

func main() {
	fmt.Println("網走に住みたいが\n仕事はない")
	fmt.Println(`網走に住みたいが\n仕事はない`)
}

実行結果

網走に住みたいが
仕事はない
網走に住みたいが\n仕事はない

memo
複数行に渡って書けるし、タブのインデントも含まれて表示される

package main

import (
	"fmt"
)

func main() {
	fmt.Println(`
海の見える
	小高い丘の上で
		静かに暮らしたい`)
}

実行結果

海の見える
	小高い丘の上で
		静かに暮らしたい

文字と符号位置とruneとbyte

rune型

Unicodeの符号位置
65は、大文字のAの符号位置
1個のUnicode符号文字を表現するための型がrune

以下、全て等価

v := `A`
var v = `A`
var v rune = `A`

runeint32型のエイリアス

package main

import (
	"fmt"
)

func main() {
	v := 'A'
	var v2 rune = 'A'
	fmt.Printf("%T %[1]c\n", v)
	fmt.Printf("%T %[1]c\n", v2)
}

実行結果

int32 A
int32 A // rune型を指定したが表示されるはint32

memo
%c 文字の符号位置ではなく、文字そのものを表示する

package main

import (
	"fmt"
)

func main() {
	v := 65
	fmt.Printf("%T型 %[1]c %[1]v\n", v)
}

実行結果

int型 A 65

byte型

byteuint8型のエイリアス

さっきとは逆にbyte型指定だと

func main() {
	var v byte = 'A'
	fmt.Printf("%T型 %[1]c %[1]v\n", v)
}

実行結果

uint8型 A 65

文字列操作

string型の一部の文字を書き換えることはできない
変数に別の文字列を代入することなら可能

abashiriからsの一文字を取り出す
%cでないと文字を表示できない

func main() {
	city := "abashiri"
	v := city[3]
	fmt.Printf("%T型 %[1]c %[1]v\n", v)
}

実行結果

uint8型 s 115

感想

後半のシーザー暗号は軽く読んだだけで飛ばした。
文字列の処理で必要に感じた際に改めて勉強する。

参考

なし