Go语言基本类型简介

数据类型主要用于声明变量和函数。Go 语言中有丰富的数据类型,除了整型、浮点型、布尔型和字符串基本类型,还有数组、切片、结构体、函数、map、channel等派生类型。
本章将介绍基本数据类型

基本类型

  • 布尔值
  • 数字类型
    • int8, int16, int32, int64, int
    • uint8, uint16, uint32, uint64, uint
    • float32, float64
    • complex64, complex128
    • byte
    • rune
  • string

布尔值

bool 类型表示布尔值,并且为truefalse

  • 布尔类型变量的默认值为 false。
  • Go 语言中不允许将整型强制转换为布尔型。
  • 布尔型无法参与数值运算,也无法与其他类型进行转换。

数字类型

有符号整数
序号 类型 大小 范围
1 int8 8 位整型 -128 到 127
2 int16 16 位整型 -32768 到 32767
3 int32 32 位整型 -2147483648 到 2147483647
4 int64 64 位整型 -9223372036854775808 到 9223372036854775807

**int:**表示 32 位或 64 位整数,具体取决于底层平台。通常应该使用int来表示整数,除非需要使用特定大小的整数。
大小: 32 位系统中为 32 位,64 位系统中为 64 位。
范围: 32 位系统中为 -2147483648 至 2147483647,64 位系统中为 -9223372036854775808 至 9223372036854775807

package main

import "fmt"

func main() {  
    var a int = 89
    b := 95
    fmt.Println("a is", a, "and b is", b)
}

Run in playground

上面的程序会打印 a is 89 and b is 95

在上面的程序中,a 是 int 类型,*b 的类型是根据分配给它的值 (95) 推断出来的。*如上所述,int的大小在32位系统中为32位,在64位系统中为64位

无符号整数
序号 类型 大小 范围
1 uint8 8 位整型 0 到 255
2 uint16 16 位整型 0 到 65535
3 uint32 32 位整型 0 到 4294967295
4 uint64 64 位整型 0 到 18446744073709551615

**uint :**表示 32 或 64 位无符号整数,具体取决于底层平台。
size : 32 位系统中为 32 位,64 位系统中为 64 位。
范围: 32 位系统中为 0 到 4294967295,64 位系统中为 0 到 18446744073709551615

浮点类型

float32: 32 位浮点数
float64: 64 位浮点数

序号 类型 描述
1 float32 32位浮点型数
2 float64 64位浮点型数
复杂类型
序号 类型 描述
1 Complex64 具有 float32 实部和虚部的复数
2 Complex128 具有 float64 实部和虚部的复数

内置函数**complex**用于构造具有实部和虚部的复数。复数函数具有以下定义

func complex(r, i FloatType) ComplexType  

它接受实部和虚部作为参数,并返回复杂类型。实部和虚部必须属于同一类型。 即float32或float64。如果实部和虚部都是 float32,则此函数返回 complex64 类型的复数值。如果实部和虚部都是 float64 类型,则此函数返回 complex128 类型的复数值

还可以使用简写语法创建复数

c := 6 + 7i  

让我们编写一个小程序来理解复数。

package main

import (
	"fmt"
)

func main() {
	c1 := complex(5, 7)
	c2 := 8 + 27i
	cadd := c1 + c2
	fmt.Println("sum:", cadd)
	cmul := c1 * c2
	fmt.Println("product:", cmul)
}

Run in playground

在上面的程序中,c1和c2是两个复数。c1 的实部为 5,虚部为 7。c2 有实部 8 和虚部 27。cadd被赋予 c1 和 c2 之和,并被cmul赋予 c1 和 c2 的乘积。

该程序将输出

sum: (13+34i)
product: (-149+191i)
其他数字类型
序号 类型 描述
1 byte uint8 的别名
2 rune int32 的别名

字符串类型

  • 字符串就是一串固定长度的字符连接起来的字符序列。
  • Go 语言的字符串以原生数据类型出现,使用字符串就像使用其他原生数据类型。
  • Go 语言里的字符串的内部实现使用 UTF8 编码。
package main

import (  
    "fmt"
)

func main() {  
    first := "Naveen"
    last := "Ramanathan"
    name := first +" "+ last
    fmt.Println("My name is",name)
}

Run in playground

在上面的程序中,首先分配了字符串*“Naveen”最后分配了字符串“Ramanathan”。可以使用 + 运算符连接字符串。name被分配的值是first连接到一个空格*,后跟last。上面的程序将打印My name is Naveen Ramanathan为输出。

还有一些可以对字符串执行的操作。我们将在单独的教程中介绍这些内容。

字符串转义符

Go 语言的字符串常见转义符包含回车、换行、单双引号、制表符等,如下表所示:

转义符    含义
\r    回车符(返回行首)
\n    换行符(直接跳到下一行的同列位置)
\t    制表符
\'    单引号
\"    双引号
\\    反斜杠

类型转换

Go 对于显式类型非常严格。没有自动类型提升或转换。让我们通过一个例子来看看这意味着什么。

package main

import (  
    "fmt"
)

func main() {  
    //int
    i := 55 
    //float64
    j := 67.8  
    //int + float64 不允许
    sum := i + j 
    fmt.Println(sum)
}

Run in playground

i 是 int 类型,j 是 float64 类型。我们正在尝试添加 2 个不同类型的数字,这是不允许的。当你运行程序时,你会得到./prog.go:10:11: invalid operation: i + j (mismatched types int and float64)

要修复此错误,ij应该属于同一类型。让我们将j转换为 int。T(v) 是将值 v 转换为类型 T 的语法

package main

import (  
    "fmt"
)

func main() {  
    i := 55   
    j := 67.8 
    sum := i + int(j) 
    fmt.Println(sum)
}

Run in playground

现在,当您运行上面的程序时,您可以看到122输出。

赋值的情况也是如此。将一种类型的变量分配给另一种类型需要显式类型转换。下面的程序对此进行了解释。

package main

import (  
    "fmt"
)

func main() {  
    i := 10
    //如果不进行显式转换,此语句将不起作用
    var j float64 = float64(i) 
    fmt.Println("j", j)
}

Run in playground

上一个教程- Go语言变量学习
下一个教程 - Go语言常量介绍

你可能感兴趣的:(Go语言教程,golang,开发语言,后端)