Les types de données du langage go sont : 1. Type booléen ; 2. Type numérique (peut être divisé en type entier et virgule flottante) 3. Type de chaîne ; 6. Type structuré ; 7. Type de canal ; 8. Type de fonction ; 10. Type d’interface ;
L'environnement d'exploitation de ce tutoriel : système Windows 10, GO 1.11.2, ordinateur Dell G3.
Le langage Go est un langage de programmation typé statiquement. Dans le langage de programmation Go, les types de données sont utilisés pour déclarer des fonctions et des variables. L'émergence des types de données consiste à diviser les données en données avec différentes tailles de mémoire requises lors de la programmation, vous devez demander une grande mémoire uniquement lorsque vous avez besoin d'utiliser du Big Data, afin de pouvoir utiliser pleinement la mémoire. Lorsque le compilateur compile, il doit connaître le type de chaque valeur, afin que le compilateur sache combien de mémoire allouer pour cette valeur et ce que représente cette mémoire allouée.
类型 | 描述 |
---|---|
uint | 32位或64位 |
uint8 | 无符号 8 位整型 (0 到 255) |
uint16 | 无符号 16 位整型 (0 到 65535) |
uint32 | 无符号 32 位整型 (0 到 4294967295) |
uint64 | 无符号 64 位整型 (0 到 18446744073709551615) |
int | 32位或64位 |
int8 | 有符号 8 位整型 (-128 到 127) |
int16 | 有符号 16 位整型 (-32768 到 32767) |
int32 | 有符号 32 位整型 (-2147483648 到 2147483647) |
int64 | 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807) |
byte | uint8的别名(type byte = uint8) |
rune | int32的别名(type rune = int32),表示一个unicode码 |
uintptr | 无符号整型,用于存放一个指针是一种无符号的整数类型,没有指定具体的bit大小但是足以容纳指针。 uintptr类型只有在底层编程是才需要,特别是Go语言和C语言函数库或操作系统接口相交互的地方。 |
float32 | IEEE-754 32位浮点型数 |
float64 | IEEE-754 64位浮点型数 |
complex64 | 32 位实数和虚数 |
complex128 | 64 位实数和虚数 |
Les données entières sont divisées en deux types, 有符号
et 无符号
Signé : int, int8, int16 , int32, int64
Non signé : uint, uint8, uint16, uint32, uint64, byte
La différence entre les entiers avec des chiffres différents est qu'ils peuvent stocker des entiers La taille du nombre range;
Les types signés peuvent stocker n'importe quel nombre entier, les types non signés ne peuvent stocker que des nombres naturels
Les tailles de int et uint sont liées au système. S'il s'agit d'un système 64 bits, cela signifie que int64 et uint64
byte sont similaires à uint8 et sont généralement utilisés pour stocker des caractères uniques
Pour vous assurer que le programme fonctionne correctement, essayez pour utiliser des types de données qui prennent moins de place
fmt.Printf("%T", var_name) type de variable de sortie
unsafe.Sizeof(var_name) afficher les octets occupés par la variable
Le type à virgule flottante est le type décimal et peut stocker des décimales. Par exemple, 6.6, -12.34
1. Une brève explication de la forme de stockage des nombres à virgule flottante dans la machine Nombres à virgule flottante = bit de signe + bit d'exposant + bit de mantisse
2. La partie mantisse peut être perdue, entraînant une perte de précision. -123.0000901
package main import "fmt" func main() { var num1 float32 = -123.0000901 var num2 float64 = -123.0000901 fmt.Println("num1 = ", num1, "num2 = ", num2); }
Explication : La précision de float64 est plus précise que celle de float32
Explication : Si nous voulons enregistrer un nombre de haute précision, nous devrions choisissez float64
3. Le stockage du type à virgule flottante est divisé en trois parties : bit de signe + bit d'exposant + bit de mantisse. Pendant le processus de stockage, la précision sera perdue
4. type à virgule flottante La valeur par défaut est le type float64
5 Normalement, float64 doit être utilisé car il est plus précis que float32
6 peut être abrégé en .123, et il prend également en charge les sciences. notation : 5.1234e2 Équivalent à 512.34
Il n'y a pas de type de caractère spécial dans Golang. Si vous souhaitez stocker un seul caractère (lettre), l'octet est généralement. utilisé pour le sauvegarder.
Une chaîne est une séquence de caractères reliés par une longueur fixe de caractères. Les chaînes de Go sont reliées par des octets simples, ce qui signifie que les chaînes traditionnelles sont composées de caractères, mais Les chaînes de Go sont différentes, elles sont composées d'octets . Les caractères
package main import "fmt" func main() { //字符只能被单引号包裹,不能用双引号,双引号包裹的是字符串 var c1 byte = 'a' var c2 byte = '0' //当我们直接输出type值时,就是输出了对应字符的ASCII码值 //'a' ==> 97 fmt.Println(c1, "--", c2) //如果我们希望输出对应字符,需要使用格式化输出 fmt.Printf("c2 = %c c2 = %c", c1, c2) }
Mais si les caractères que nous enregistrons sont supérieurs à 255, comme le stockage de caractères chinois, alors le Le type d'octet ne peut pas être enregistré. Vous pouvez utiliser le type uint ou int pour enregistrer
Le type de caractère est stocké dans l'ordinateur, et la valeur du code correspondant au caractère doit être stockée (Entier) Découvrez
Stockage : caractère--> Valeur du code-->
Lecture : Binaire-->Valeur du code--> Caractères --> LectureLes chaînes sont immuables dans Go.
2. Deux formes d'identification de chaînesvar str = "abc\nabc" //输出时会换行
var str string = `abc\nabc` //输出时原样输出,不会转义
var str string = "hello " + "world" str += "!"
4. Lorsqu'une ligne de chaîne est trop longue et que des chaînes multilignes doivent être utilisées, vous pouvez utiliser le traitement suivant
//正确写法 str := "hello" + " world!" fmt.Println(str) //错误写法 str := "hello " + "world!" fmt.Println(str)
指针类型,指针变量存的是一个地址,这个地址指向的空间存的才是值,比如:var ptr *int = &num
获取指针类型所指向的值,使用:*,比如,var ptr *int,使用*ptr获取ptr指向的值
指针细节说明:
值类型,都有对应的指针类型,形式为*数据类型,比如int对应的指针就是*int,float64对应的指针类型就是*float64,依此类推。
值类型包括:基本数据类型、数组和结构体struct
值类型和引用类型使用特点:
值类型:变量直接存储值,内存通常在栈中分配
引用类型:变量存储的是一个地址,这个地址对应的空间才真正存储数据(值),内存通常在堆上分配,当没有任何变量应用这个地址时,该地址对应的数据空间就成为一个垃圾,由GC来回收。
Golang中值类型和引用类型的区分
值类型:基本数据类型(int系列、float系列、bool、string)、数组和结构体
引用类型:指针、slice切片、map、管道chan、interface等都是引用类型
在Golang中,数据类型都有一个默认值,当程序员没有赋值时,就会保留默认值,在Golang中,默认值也叫做零值。
基本数据类型默认值如下:
数据类型 | 默认值 |
---|---|
整型 | 0 |
浮点型 | 0 |
字符串 | "" |
布尔类型 | false |
package main import "fmt" func main() { var a int var b float32 var isTrue bool var str string //这里的%v,表示按照变量的值输出 fmt.Printf("a = %v, b = %v, isTrue = %v, str = %v", a, b, isTrue, str) fmt.Println("") }
推荐学习:Golang教程
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!