職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

GOのリテラル

2022年12月25日 | GO言語
GOのリテラル

【開発環境】
OS:Win11(64ビット)
go version go1.19.4 windows/amd64
VSCode1.72.2、及びコマンドプロンプト

リテラル(直値)とは】
リテラル とは、プログラムのソースコードにおいて使用される、 数値や文字列を直接に記述した定数 のこと。


1.整数リテラル
10 進数、 8 進数、 16 進数の整数リテラルがあり、 8 進数は頭に 0 を、 16 進数は頭に 0x 0X をつける。
例文
// 10 進数の場合
package main
import "fmt"

func main() {
x := 123 //x := 1_2_3のようにアンダースコアを使っても良い
fmt.Printf("%v [%T]\n", x, x)

}
実行
PS D:\GO言語\サンプルプログラム\Go-2\2.2> go run sample.go
123 [int]

//2進数の場合
x := 0b1100
fmt.Printf("%v [%T]\n", x, x)
実行
PS D:\GO言語\サンプルプログラム\Go-2\2.2> go run sample.go
12 [int]

//8進数
x := 0123 //先頭が 0 始まりの数値は自動的に 8 進数として解釈さる
fmt.Printf("%v [%T]\n", x, x)
実行
PS D:\GO言語\サンプルプログラム\Go-2\2.2> go run sample.go
83 [int]

//16進数
x := 0xBEEF //接頭辞は 0xまたは0X
fmt.Printf("%v [%T]\n", x, x)
実行
PS D:\GO言語\サンプルプログラム\Go-2\2.2> go run sample.go
48879 [int]

2.浮動小数点リテラル
浮動小数点定数を表す小数表現で、整数部・小数点( . )・小数部・指数部( e+ E+)がある
100 は 1e2 1.e2 1e+2 1E2 、 0.01 は 1e-2 1.e-2 1E-2 などと表現できる

//浮動小数点
x := 3.14
fmt.Printf("%v [%T]\n", x, x) // 3.14 [float64]
実行
PS D:\GO言語\サンプルプログラム\Go-2\2.2> go run sample.go
3.14 [float64]

//10の累乗
x := 1.23e-3
fmt.Printf("%v [%T]\n", x, x)
実行
PS D:\GO言語\サンプルプログラム\Go-2\2.2> go run sample.go
0.00123 [float64]

//16進数浮動小数点
package main
import (
"fmt"
"math"
)

func main() {
x := 0x1.fp3
fmt.Printf("%v [%T]\n", x, x)
y := (1 + 15.0/16.0) * math.Pow(2, 3)
fmt.Printf("%v\n", y) // 15.5
}
実行
PS D:\GO言語\サンプルプログラム\Go-2\2.2> go run sample.go
15.5 [float64]
15.5

3.虚数リテラル
複素数定数の虚数部分の小数表現
小数整数と小文字 i で構成される

//虚数
x := 123i
fmt.Printf("%v [%T]\n", x, x)
実行
PS D:\GO言語\サンプルプログラム\Go-2\2.2> go run sample.go
(0+123i) [complex128]

4.ルーンリテラル
Unicodeコードポイントに一致する整数値( int32 )
シングルクォート( ' )でくくって表現する
バックスラッシュを使用したマルチ文字シーケンスの各書式でエンコード( \' )することで、シングルクォート文字自体のUnicode値も表せる


//Unicode 文字
x := '\101'
y := '\x41'
fmt.Printf("%c %c\n", x, y)
・実行
PS D:\GO言語\サンプルプログラム\Go-2\2.2> go run sample.go
A A

//16進数文字コード
x := '\u672C'
y := '\U0001F604'
fmt.Printf("%c [%T]\n", x, x)
fmt.Printf("%c [%T]\n", y, y)
・実行
PS D:\GO言語\サンプルプログラム\Go-2\2.2> go run sample.go
本 [int32]
😄 [int32]

5.文字列リテラル
未加工文字列リテラル( raw 文字列リテラル)はバッククォート、解釈有文字列リテラル( interpreted 文字列リテラル)はダブルクォートで囲む

//ダブルクォート "
x := "Hello, world!"
y := "\101\102\x43"
fmt.Println(x) // Hello, world!
fmt.Println(y)

・実行
PS D:\GO言語\サンプルプログラム\Go-2\2.2> go run sample.go
Hello, world!
ABC

//ダブルクォートではなくバッククォート ` で囲むと複数行に渡って文字を記述でできる
x := `Hello,
World!`
fmt.Println(x)

・実行
PS D:\GO言語\サンプルプログラム\Go-2\2.2> go run sample.go
Hello,
World!

エスケープ


・サンプルプログラム
//水平タブ
package main
import (
"fmt"
)

func main() {
x := "abc\tdeef"
fmt.Println(x)

}
・実行
PS D:\GO言語\サンプルプログラム\Go-2\2.2> go run sample.go
abc deef

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Goの変数と定数 | トップ | 演算子 »
最新の画像もっと見る

コメントを投稿

GO言語」カテゴリの最新記事