囲碁言語の基本データ型の章V
整数
タイプ | 説明 |
---|---|
UINT8 | 符号なし8ビット整数(0〜255) |
uint16の | 符号なし16ビット整数(0〜65535) |
UINT32 | 符号なし32ビット整数(0 4,294,967,295まで) |
UINT64 | 64ビットの符号なし整数(0から18446744073709551615) |
INT8 | 符号付き8ビット整数(127 -128) |
INT16 | 符号付き16ビット整数(-32768〜32767) |
INT32 | 符号付き32ビット整数(2147483647に-2147483648) |
int64モード | 符号付き64ビット整数(9223372036854775807に-9223372036854775808) |
uint8
我々は知っている、あるbyte
タイプ、int16
対応するC言語short
、タイプをint64
C言語に対応したlong
タイプ
特別整数
タイプ | 説明 |
---|---|
UINT | オペレーティングシステムは、32ビットでありuint32 、64ビットオペレーティングシステムでありますuint64 |
int型 | オペレーティングシステムは、32ビットでありint32 、64ビットオペレーティングシステムでありますint64 |
uintptr | ポインタを格納するための符号なし整数、 |
デジタルリテラル構文
package main import "fmt" func main(){ // 十进制 var a int = 10 fmt.Printf("%d \n", a) // 10 fmt.Printf("%b \n", a) // 1010 占位符%b表示二进制 // 八进制 以0开头 var b int = 077 fmt.Printf("%o \n", b) // 77 // 十六进制 以0x开头 var c int = 0xff fmt.Printf("%x \n", c) // ff fmt.Printf("%X \n", c) // FF }
フロート
ゴー言語のサポート2つの浮動小数点数:
float32
とfloat64
package main import ( "fmt" "math" ) func main() { fmt.Println(math.MaxFloat32) fmt.Println(math.MaxFloat64) } >>> 3.4028234663852886e+38 1.7976931348623157e+308
複数
complex64とcomplex128
var c1 complex64 c1 = 1 + 2i var c2 complex128 c2 = 2 + 3i fmt.Println(c1) fmt.Println(c2)
Complex64の実部と虚部は32ビット、complex128実数部と虚数部64です。
ブール値
- ブールデータのみ
true(真)
とfalse(假)
二つの値。
備考:
- ブール変数のデフォルト値があります
false
。 - 囲碁言語はブール整数のキャストでは許可されません。
- これはpythonで真のための0の手段という誤っ、1ではありません
- 値に参加することはできませんブール演算は、他のタイプに変換することはできません。
弦
ストリング
文字列値の
双引号 ""
コンテンツやバッククォートs1 := "hello" s2 := "你好"
文字列エスケープ
バックスラッシュでエスケープ:\ rを\ nは、など
// 比如打印一个Windows平台下的一个文件路径 package main import ( "fmt" ) func main() { fmt.Println("str := \"c:\\Code\\lesson1\\go.exe\"") }
複数行の文字列
複数行の文字列には、抗引用符を使用する必要があります。
s1 := `第一行 第二行 第三行 \n \t ` fmt.Println(s1)
一般的な文字列操作
方法 | 入門 |
---|---|
LEN(文字列) | 長さを求めます |
+またはfmt.Sprintf | 文字列の連結 |
strings.Split | 分割 |
strings.contains | 含めるかどうかを決定します |
strings.HasPrefix、strings.HasSuffix | プレフィックス/サフィックス解析 |
strings.Index()、strings.LastIndex() | 発生した部分文字列の位置 |
strings.Join([]の文字列、9月列) | シンボルスプライシングを使用して、結合操作 |
バイトとルーンタイプ
「文字」と呼ばれる各文字列要素の組成は、文字列または単一の取得要素を横断することによって得ることができます。単一引用符で包まれた文字(「)
var a := '中' var b := 'x'
次の二つのゴー言語の文字:
- バイトタイプは表し
ASCII码
文字を。- バイト型は、実際にある
uint8
タイプ
- バイト型は、実際にある
rune
Aを表すType、UTF-8字符
rune
それは実際にタイプですint32
。
- バイトタイプは表し
func main() { s := "hello沙河" for i := 0; i < len(s); i++ { //byte fmt.Printf("%c", s[i]) } fmt.Println() for _, r := range s { //rune fmt.Printf("%c", r) } } >>> helloæ²æ²³ hello沙河
文字列を変更します
最初に変換する文字列の必要性を変更する
[]rune
か、[]byte
への変換が完了した後、string
。どちらの変換は、メモリの再割り当て、バイト配列をコピーします。func main() { s1 := "big" // 强制类型转换 byteS1 := []byte(s1) byteS1[0] = 'p' fmt.Println(string(byteS1)) s2 := "白萝卜" runeS2 := []rune(s2) runeS2[0] = '红' fmt.Println(string(runeS2)) } >>> pig 红萝卜
型変換
囲碁言語のみキャスト、ない暗黙の型変換。この構文は、使用している場合にのみサポートの2種類との相互変換。
func sqrtDemo() { var a, b = 3, 4 var c int // math.Sqrt()接收的参数是float64类型,需要强制转换 c = int(math.Sqrt(float64(a*a + b*b))) fmt.Println(c) } // 将a*a + b*b的结果强制转换成float64类型