Heim >Backend-Entwicklung >Golang >Welche Datentypen gibt es in der Go-Sprache?
Die Datentypen der Go-Sprache sind: 1. Boolescher Typ, der Wert kann nur eine Konstante wahr oder falsch sein; 2. Numerischer Typ, der Ganzzahlen und Gleitkommazahlen unterstützt; 3. String-Typ; , das ist eine Zeichenfolge, die durch Zeichen fester Länge verbunden ist; 5. Strukturierter Typ; . Kartentyp .
Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.
In der Programmiersprache Go werden Datentypen zum Deklarieren von Funktionen und Variablen verwendet.
Das Aufkommen von Datentypen besteht darin, Daten in Daten mit unterschiedlichen erforderlichen Speichergrößen aufzuteilen. Beim Programmieren müssen Sie nur dann großen Speicher beantragen, wenn Sie große Datenmengen verwenden müssen, damit Sie den Speicher vollständig nutzen können.
Go-Sprache hat die folgenden Datentypen nach Kategorie:
Seriennummer | Typ und Beschreibung |
---|---|
1 |
Boolean Der Wert von Boolean kann nur die Konstante wahr oder falsch sein. Ein einfaches Beispiel: var b bool = true. |
2 |
Zahlentyp Ganzzahltyp int und Gleitkommatyp float32, float64, Die Go-Sprache unterstützt Ganzzahl- und Gleitkommazahlen sowie komplexe Zahlen, bei denen die Bitoperation Komplementcode verwendet. |
3 |
String-Typ: Eine Zeichenfolge ist eine Zeichenfolge, die durch eine Reihe von Zeichen fester Länge verbunden ist. Die Zeichenfolgen von Go werden aus einzelnen Bytes verkettet. Die Bytes der Go-Sprachzeichenfolgen verwenden die UTF-8-Codierung, um Unicode-Text zu identifizieren. |
4 |
Abgeleitete Typen: umfassen:
|
int8、int16、int32、int64
uint8、uint16、uint32、uint64
uint8 对应 byte 型 int16 对应 C 语言中的 short 型 int64 对应 C 语言中的 long 型
Beschreibung | |
---|---|
Signiert 8- Bit-Ganzzahl (-1 28 bis 127) | |
16-Bit-Ganzzahl mit Vorzeichen (-32768 bis 32767) | Vorzeichenbehaftete 64-Bit-Ganzzahl ( -9223372036854775808 bis 9223372036854775807 )|
Vorzeichenlose 8-Bit-Ganzzahl (0 bis 255) | |
Vorzeichenlose 16-Bit-Ganzzahl (0 bis 6553. 5) | |
un vorzeichenbehafteter 32-Bit-Ganzzahltyp ( 0 bis 4294967295) | |
Vorzeichenloser 64-Bit-Ganzzahltyp (0 bis 18446744073709551615) | |
1.3. Spezieller Ganzzahltyp | |
Typ | Beschreibung |
uint | Auf 32-Bit-Betriebssystemen ist es uint32, auf 64-Bit-Betriebssystemen ist es uint64 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ganzzahltyp ohne Vorzeichen, der zum Speichern eines Zeigers verwendet wird | |||||||||||||||||||||||||||||
转义符 | 含义 |
---|---|
\r | 回车符 (返回行首) |
\n | 换行符 (直接跳到下一行的同列位置) |
\t | 制表符 |
' | 单引号 |
" | 双引号 |
\ | 反斜杠 |
package main import ( "fmt" ) func main() { // 转义符的使用 fmt.Println("\n# 转义符的使用 str := \"c:\\go\"") }
方法 | 方法说明 |
---|---|
len(str) | 求长度 |
+或fmt.Sprintf | 拼接字符串 |
strings.Split | 分割 |
strings.contains | 判断是否包含 |
strings.HasPrefix,strings.HasSuffix | 前缀/后缀判断 |
strings.Index(),strings.LastIndex() | 子串出现的位置 |
strings.Join(a[]string, sep string) | join操作 |
package main import ( "fmt" "strings" ) // 字符串操作 func main() { // 字符串求长度 s3 := "zhongguojueqi" fmt.Println("\n字符串-求长度: ", len(s3)) // 字符串拼接 s4 := "nihaoshijie" fmt.Println("\n字符串-拼接01: ", s3+s4) s5 := fmt.Sprintf("%s---%s", s3, s4) fmt.Println("\n字符串-拼接02: ", s5) // 字符串分割 s6 := strings.Split(s3, "o") fmt.Println("\n字符串-分割: ", s6) // 字符串包含判断 s7 := strings.Contains(s3, "o") fmt.Println("\n字符串-包含判断01: ", s7) fmt.Println("\n字符串-包含判断02: ", strings.Contains(s3, "o")) // 字符串前缀, 后缀判断 fmt.Println("\n字符串-前缀判断: ", strings.HasPrefix(s3, "zhong")) fmt.Println("\n字符串-后缀判断: ", strings.HasSuffix(s3, "qi")) // 字符串索引查找 fmt.Println("\n字符串-索引查找-第一个字符 o 的索引: ", strings.Index(s3, "o")) fmt.Println("\n字符串-索引查找-最后一个字符 o 的索引: ", strings.LastIndex(s3, "o")) // 字符串-join操作 s8 := []string{"aaa", "bbb", "ccc", "ddd"} fmt.Println("\n字符串-join 操作: ", strings.Join(s8, " + ")) }
func runeDemo01() { // 字符定义 a := '中' // 默认识别为 rune 类型的字符变量 b := "中" // 定义一个字符串 var c byte = 'a' // 定义一个byte类型字符 var d rune = 'a' // 定义一个rune类型字符 fmt.Println(a, b) fmt.Printf("%v,%T\n", c, c) fmt.Printf("%v,%T\n", d, d) }
// 字符串遍历-traversalString package main import ( "fmt" ) func traversalString01() { s := "hello世界" for i := 0; i < len(s); i++ { // 中英文使用 for循环加 len() 方法遍历循环,但遇到中文会有乱码 fmt.Printf("%v(%c) ", s[i], s[i]) } fmt.Println() fmt.Println([]byte(s)) } ----------------------- 104(h) 101(e) 108(l) 108(l) 111(o) 228(ä) 184(¸) 150() 231(ç) 149() 140() -----------------------
package main import ( "fmt" ) // 遍历字符串 traversalString func traversalString02() { s := "hello世界" fmt.Println() for _, r := range s { // 按照 rune 类型遍历 fmt.Printf("%v(%c) ", r, r) } fmt.Println() fmt.Println([]rune(s)) } ----------------------- 104(h) 101(e) 108(l) 108(l) 111(o) 19990(世) 30028(界) -----------------------
1.因为 UTF8 编码下一个中文汉字由 3~4 个字节组成,所以我们不能简单的按照字节去遍历一个包含中文的字符串,否则就会出现上面输出中第一行的结果 2.字符串底层是一个 byte 数组,所以可以和 []byte 类型相互转换 3.字符串是不能修改的 字符串是由 byte 字节组成,所以字符串的长度是 byte 字节的长度 4.rune 类型用来表示 utf8 字符,一个 rune 字符由一个或多个 byte 组成。
func changeString() { s1 := "big" // 强制类型转换 byteS1 := []byte(s1) byteS1[0] = 'p' fmt.Println(string(byteS1)) s2 := "白萝卜" runeS2 := []rune(s2) runeS2[0] = '红' fmt.Println(string(runeS2)) }
T(表达式)
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) }
计算直角三角形的斜边长时使用 math 包的 Sqrt() 函数,该函数接收的是 float64 类型的参数
而变量 a 和 b 都是 int 类型的,这个时候就需要将 a 和 b 强制类型转换为 float64 类型
Das obige ist der detaillierte Inhalt vonWelche Datentypen gibt es in der Go-Sprache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!