El básico de los tipos de datos Capítulo V de la lengua Go
entero
tipo | descripción |
---|---|
uint8 | Enteros sin signo de 8 bits (0 a 255) |
uint16 | Enteros sin signo de 16 bits (0 a 65535) |
uint32 | Enteros sin signo de 32 bits (0 a 4294967295) |
uint64 | entero sin signo de 64 bits (0-18446744073709551615) |
INT8 | Firmado entero de 8 bits (-128 a 127) |
Int16 | Entero de 16 bits (-32768-32.767) |
int32 | Entero de 32 bits (-2147483.648 mil hasta 2147.483647 millones) |
Int64 | Firmado entero de 64 bits (-9223372036854775808-9223372036854775807) |
uint8
Es decir, sabemos elbyte
tipo,int16
el correspondiente lenguaje Cshort
tipo,int64
que corresponde al lenguaje Clong
Tipo
Entero especial
tipo | descripción |
---|---|
uint | El sistema operativo es un 32-bit uint32 del sistema operativo, 64 bits esuint64 |
En t | El sistema operativo es un 32-bit int32 del sistema operativo, 64 bits esint64 |
UIntPtr | unsigned int, para almacenar un puntero |
sintaxis literal de Digital
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 }
flotador
soportes idioma ir dos números de punto flotante:
float32
yfloat64
package main import ( "fmt" "math" ) func main() { fmt.Println(math.MaxFloat32) fmt.Println(math.MaxFloat64) } >>> 3.4028234663852886e+38 1.7976931348623157e+308
plural
complex64 y complex128
var c1 complex64 c1 = 1 + 2i var c2 complex128 c2 = 2 + 3i fmt.Println(c1) fmt.Println(c2)
Complex64 real y parte imaginaria es de 32 bits, complex128 la parte real e imaginaria 64.
valor booleano
- sólo los datos de Boole
true(真)
yfalse(假)
dos valores.
observaciones:
- Boolean variables de valor por defecto es
false
. - Ir idioma no está permitido en el elenco entero de Boole.
- Eso no está en pitón 0 significa que los falsos, 1 para Verdadero
- operaciones booleanas no pueden participar en valor no se pueden convertir a otros tipos.
cadena
cuerda
Valor de la cadena
双引号 ""
contenido o acentos abiertoss1 := "hello" s2 := "你好"
Escapar de cuerdas
Escaparon con una barra invertida: \ r \ n, etc.
// 比如打印一个Windows平台下的一个文件路径 package main import ( "fmt" ) func main() { fmt.Println("str := \"c:\\Code\\lesson1\\go.exe\"") }
cadenas multilínea
cadenas multilínea, debe utilizar el carácter anti-presupuesto
s1 := `第一行 第二行 第三行 \n \t ` fmt.Println(s1)
operación de cadena comunes
método | introducción |
---|---|
len (str) | busque longitud |
+ O fmt.Sprintf | La concatenación de cadenas |
strings.Split | división |
strings.contains | Determinar si incluir |
strings.HasPrefix, strings.HasSuffix | Análisis de prefijo / sufijo |
strings.Index (), strings.LastIndex () | Posición de la subcadena que ocurre |
strings.Join (una cadena [], cadena sep) | unirse a las operaciones, utilizando el símbolo de empalme |
byte y el tipo runa
La composición de cada elemento de cadena llamado "personajes" se puede obtener por la que atraviesa una cadena de caracteres o un solo elemento de adquisición. Carácter ( ') envuelta entre comillas simples
var a := '中' var b := 'x'
Ir caracteres del idioma de los dos siguientes:
- Tipo de byte representa
ASCII码
un personaje.- Tipo de byte es en realidad un
uint8
tipo de
- Tipo de byte es en realidad un
rune
Escribir, lo que representa unaUTF-8字符
rune
En realidad, es un tipoint32
.
- Tipo de byte representa
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沙河
Modificar la cadena de
Para modificar la necesidad cadena para convertir en primer lugar en
[]rune
o[]byte
después de la finalización de la conversión enstring
. De cualquier conversión volverá a asignar memoria y copiar la matriz de bytes.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 红萝卜
tipo de conversión
idioma ir solamente arroja, sin conversión implícita. Esta sintaxis se utiliza sólo cuando la conversión mutua entre los dos tipos de apoyo.
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类型