Go

RE:从零开始的Golang学习笔记(三)数据类型

参考:菜鸟教程&&Go系列教程

习惯了PHP的写法,看到Go的类型瞬间懵逼。

简单划分为以下四种类型

  1. 布尔型
  2. 数字类型
  3. 字符串类型
  4. 派生类型

布尔类型(bool)

和其他语言相同,布尔类型只有两个值,true 或者 false

package main

import "fmt"

func main() {
    a := true
    b := false
    fmt.Println(a)
    fmt.Println(b)
    fmt.Println(a || b)
    fmt.Println(a && b)
}
/**
true
false
true
false
*/

数字类型

数字类型分为有符号、无符号、浮点型、复数、其他

有符号整型
1.int8:表示 8 位有符号整型
大小:8 位
范围:-128~127

2.int16:表示 16 位有符号整型
大小:16 位
范围:-32768~32767

3.int32:表示 32 位有符号整型
大小:32 位
范围:-2147483648~2147483647

4.int64:表示 64 位有符号整型
大小:64 位
范围:-9223372036854775808~9223372036854775807

5.int:根据不同的底层平台(Underlying Platform),表示 32 或 64 位整型。除非对整型的大小有特定的需求,否则你通常应该使用 int 表示整型。
大小:在 32 位系统下是 32 位,而在 64 位系统下是 64 位。
范围:在 32 位系统下是 -2147483648~2147483647,而在 64 位系统是 -9223372036854775808~9223372036854775807。

无符号整型
1.uint8:表示 8 位无符号整型
大小:8 位
范围:0~255

2.uint16:表示 16 位无符号整型
大小:16 位
范围:0~65535

3.uint32:表示 32 位无符号整型
大小:32 位
范围:0~4294967295

4.uint64:表示 64 位无符号整型
大小:64 位
范围:0~18446744073709551615

5.uint:根据不同的底层平台,表示 32 或 64 位无符号整型。
大小:在 32 位系统下是 32 位,而在 64 位系统下是 64 位。
范围:在 32 位系统下是 0~4294967295,而在 64 位系统是 0~18446744073709551615。

浮点型
1.float32:32 位浮点数
2.float64:64 位浮点数

复数类型
1.complex64:实部和虚部都是 float32 类型的的复数。
2.complex128:实部和虚部都是 float64 类型的的复数。
3.go有一个内建函数可以用来创建复数

package main

import (
    "fmt"
)

func main() {
    //complex的参数是浮点型,且浮点类型必须一样,都为 float32 返回 complex64 ,都为 float64 返回 complex128
    c1 := complex(3, 4)
    fmt.Println(c1)
    //结果(3+4i)
}

其他数字类型
1.byte 是 uint8 的别名。
2.rune 是 int32 的别名。

string 字符串类型

在 Golang 中,字符串是字节的集合。使用 + 可以连接字符串。

package main

import (
    "fmt"
)

func main() {
    a := "My name is "
    b := "xiaoming"
    fmt.Println(a + b)
    //结果:My name is xiaoming
}

派生类型

包括:

  1. 指针类型(Pointer)
  2. 数组类型
  3. 结构化类型(struct)
  4. Channel 类型
  5. 函数类型
  6. 切片类型
  7. 接口类型(interface)
  8. Map 类型

类型转换

由于Go是强类型语言,有着非常严格的强类型特征,必须转换为同类型才可以运算。

package main

import (
    "fmt"
)

func main() {
    a := 3     
    b := 5.2    
    sum := a + b 
    fmt.Println(sum)
}

以上代码会报错:类型int和float64不匹配 ,想要运算必须转换为同类型,如下:

package main

import (
    "fmt"
)

func main() {
    a := 3 
    b := 5.2
    sum1 := a + int(b) 
    sum2 := float64(a) + b 
    fmt.Println(sum1)//等于8
    fmt.Println(sum2)//等于8.2
}

相同的,在赋值的时候也要注意类型。

package main

import (
    "fmt"
)

func main() {
    a := 3.2
    var b int = int(a)
    fmt.Println(b)//等于3
}
微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

微信扫一扫,向我赞赏

支付宝扫一扫,向我赞赏

回复

This is just a placeholder img.