当前位置: 首页 > news >正文

Go基础-类型

文章目录

  • 1 bool
  • 2 有符号整数
  • 3 无符号整数
  • 4 浮点数
  • 5 复数
  • 6 string
  • 7 关于类型转型

1 bool

bool类型有两个值,一个是true,一个是false。

测试

package mainimport "fmt"func main() {a := trueb := falsec := a && bd := a || bfmt.Println(a, b, c, d) //true false true false}

2 有符号整数

int8

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

int16

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

int32

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

int64

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

int类型根据底层平台不同,具有不同的数据长度,32位电脑的int类型占4个字节,范围是int32的范围、64位电脑的int类型占8个字节,范围是int64的范围。

测试

package mainimport ("fmt""unsafe"
)func main() {a := 90fmt.Printf("type of a : %T, size of a : %d", a, unsafe.Sizeof(a))// type of a : int, size of a : 8
}

因为我的系统是64位的,所以int类型占用8个字节,64位。

3 无符号整数

uint8

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

uint16

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

uint32

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

uint64

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

uint

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

4 浮点数

float32 32位浮点数

float64 64位浮点数

测试

package mainimport ("fmt""unsafe"
)func main() {a, b := 3.14, 9.18sum := a + bdiff := a - bfmt.Println("a+b=", sum, "a-b=", diff)fmt.Printf("type of sum is %T, sizeof sum is %d", sum, unsafe.Sizeof(sum))/*a+b= 12.32 a-b= -6.039999999999999type of sum is float64, sizeof sum is 8*/
}

5 复数

complex 64

实部和虚部都是float32形成的复数是complex64

complex 128

实部和虚部都是float64形成的复数是complex128

go语言通过内置方法complex构造复数,complex接受两个参数,分别是实部和虚部

测试

package mainimport ("fmt""unsafe"
)func main() {a := 6 + 8ifmt.Printf("type of a:%T,size of a:%d", a, unsafe.Sizeof(a))//type of a:complex128,size of a:16
}

测试2

package mainimport ("fmt""unsafe"
)func main() {var a, b float32 = 5, 7c := complex(a, b)fmt.Printf("type of a:%T,size of a:%d", c, unsafe.Sizeof(c))// type of a:complex64,size of a:8
}

6 string

字符串是由一个个字节组成的字节数组

package mainimport "fmt"func main() {firstname := "kobe"lastname := "bryant"fullname := firstname + " " + lastnamefmt.Printf("全名:%s", fullname) //全名:kobe bryant}

7 关于类型转型

Go是强类型语言,不支持C语言那种隐式类型转换

package mainimport "fmt"func main() {a := 1b := 2.2//c := float64(a) + b  正确 返回3.2//c := a + int(b)  正确 返回3//c:=a+b 错误  fmt.Println(c)
}

不同类型操作会报错

package mainimport "fmt"func main() {a := 1b := 2.2//c := float64(a) + b// c := a + int(b)c := a + b // invalid operation: a + b (mismatched types int and float64)fmt.Println(c)
}
http://www.lryc.cn/news/12659.html

相关文章:

  • 良许翻天覆地的2022年
  • node+vue微信小程序的社区后勤报修系统
  • WSL(Windows Subsystem for Linux)
  • 华为OD机试题 - 单词反转(JavaScript)
  • 人工智能原理复习 | 产生式系统的搜索策略
  • 初始C语言 - 数组(一维数组、二维数组、数组越界、数组传参)
  • 人工智能原理复习 | 可分解产生式系统的搜索策略
  • 线段树(维护区间信息)
  • C语言 基于Ncurse库的贪吃蛇游戏项目
  • 【Java基础】Java语言特性
  • python进阶--Numyp库(一)
  • CV学习笔记-Inception
  • 注意力机制笔记——结合沐神和B站老弓up主
  • 建议收藏,轻松搞懂区块链
  • php设计一个新春祝福墙
  • KubeSphere 社区双周报 | OpenFunction 集成 WasmEdge | 2023.02.03-02.16
  • 数字IC/FPGA 秋招知识点不全面整理
  • 你知道java8是如何排序Map嘛?
  • 【李忍考研传】一、李忍
  • 测牛学堂:软件测试python深入之类和对象的属性和方法总结
  • css实例--新闻页面
  • SpringCloudGateway 动态转发后端服务
  • 使用canvas写一个flappy bird小游戏
  • KVM-2、虚拟化基础
  • 设计模式之观察者模式与访问者模式详解和应用
  • [SSD固态硬盘技术 18] Over-Provisioning (OP 预留空间)详解,谁“偷”走了SSD的容量?
  • spring注解方式整合Dubbo源码解析
  • 大数值金额大写转换(C语言)
  • 迷宫问题图解 : 基于骨架提取、四邻域
  • 设计模式 - 如何在库和主程序之间互相调用数据和函数