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 语言中不允许将整型强制转换为布尔型。
  • 布尔型无法参与数值运算,也无法与其他类型进行转换。

数字类型

有符号整数
序号类型大小范围
1int88 位整型-128 到 127
2int1616 位整型-32768 到 32767
3int3232 位整型-2147483648 到 2147483647
4int6464 位整型-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位

无符号整数
序号类型大小范围
1uint88 位整型0 到 255
2uint1616 位整型0 到 65535
3uint3232 位整型0 到 4294967295
4uint6464 位整型0 到 18446744073709551615

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

浮点类型

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

序号类型描述
1float3232位浮点型数
2float6464位浮点型数
复杂类型
序号类型描述
1Complex64具有 float32 实部和虚部的复数
2Complex128具有 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)
其他数字类型
序号类型描述
1byteuint8 的别名
2runeint32 的别名

字符串类型

  • 字符串就是一串固定长度的字符连接起来的字符序列。
  • 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语言常量介绍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Go语言基本语法和高级变量类型的介绍: 1. 变量声明和初始化 在Go语言中,可以使用var关键字声明变量。变量声明可以包含一个或多个变量,可以在声明时初始化变量,也可以在后续代码中初始化变量。例如: ```go var name string var age int = 18 married := false ``` 2. 数据类型 Go语言中的数据类型包括基本数据类型和复合数据类型基本数据类型包括bool、string、int、float等,复合数据类型包括数组、切片、结构体、接口、函数等。例如: ```go // 基本数据类型 var b bool = true var s string = "hello" var i int = 10 var f float32 = 3.14 // 复合数据类型 var arr [3]int = [3]int{1, 2, 3} var slice []int = []int{1, 2, 3} type Person struct { Name string Age int } var p Person = Person{Name: "Tom", Age: 18} ``` 3. 指针类型 Go语言中的指针类型用于存储变量的内存地址。可以使用&运算符获取变量的地址,使用*运算符获取指针指向的变量的值。例如: ```go var i int = 10 var p *int = &i fmt.Println(*p) // 输出:10 ``` 4. 结构体类型 Go语言中的结构体类型用于定义一组相关的数据字段。可以使用type关键字定义结构体类型,使用.运算符访问结构体字段。例如: ```go type Person struct { Name string Age int } var p Person = Person{Name: "Tom", Age: 18} fmt.Println(p.Name) // 输出:Tom ``` 5. 接口类型 Go语言中的接口类型用于定义一组方法签名。可以使用type关键字定义接口类型,使用实现接口的类型来实现接口方法。例如: ```go type Animal interface { Speak() string } type Dog struct {} func (d Dog) Speak() string { return "汪汪" } var a Animal = Dog{} fmt.Println(a.Speak()) // 输出:汪汪 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值