[TOC]
# 整型
整型分为以下两个大类:
- 有符号(int8, int16, int32, int64)
- 无符号(uint8, uint16, uint32, uint64)
- 特殊类型(int, uint)
| 类型 | 数值范围 | 类型 | 数值范围 |
| :-: | :-: | :-: | :-: |
| int8 | -128~127 | uint8 | 0~255 |
| int16 | -32768~32767 | uint16 | 0~65535 |
| int32 | -2147483648~2147483647 | uint32 | 0~4294967295 |
| int64 | -9223372036854775808~9223372036854775807 | uint64 | 0~18446744073709551615 |
特殊类型(int, uint):
- 在64位操作系统下。int就是int64,uint就是uint64
- 在32位操作系统下。int就是int32,uint就是uint32
`go env GOARCH` :可以看到底层架构
1. 定义整型变量
>[warning] Go语言变量不能直接定义二进制数字
> 可以通过定义十进制数,然后转换成二进制数字
```go
// 十进制
var i10 int
i10 = 16
fmt.Println(i10) // 16
// 八进制(以数字0开头)
var i8 int
i8 = 017
fmt.Println(i8) // 15
// 十六进制(以0x开头)
i16 := 0x12
fmt.Println(i16) // 18
```
2. 查看变量
```go
age := 18
// %d打印age对应十进制数
fmt.Printf("age is %d\n", age) //age is 18
// %b打印age对应二进制数
fmt.Printf("age is %b\n", age) //age is 10010
// %o打印age对应八进制数
fmt.Printf("age is %o\n", age) //age is 22
// %x打印age对应十六进制数
fmt.Printf("age is %x\n", age) //age is 12
```
3. 修改变量值
```go
age := 16 //简短声明变量并赋值
fmt.Printf("age is %d\n", age) //age is 16
age = 22 //修改变量值
fmt.Printf("age is %d\n", age) //age is 22
```
# 浮点型
浮点型有两个类型,分别为 `float32` 和 `float64`。
查看两种类型的最大范围
```go
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.MaxFloat32) //3.4028234663852886e+38
fmt.Println(math.MaxFloat64) //1.7976931348623157e+308
}
```
定义赋值与修改
```go
var f1 float64 = 3.14
fmt.Printf("f1 is %f, f1 type is %T\n", f1, f1) //f1 is 3.140000, f1 type is float64
f2 := float32(9.8)
fmt.Printf("f2 is %f, f2 type is %T\n", f2, f2) //f2 is 9.800000, f2 type is float32
// %.nf,n是一个数字代表。表示保留n位小数,四舍五入原则
f2 = 1.23456789
fmt.Printf("f2 is %.2f\n", f2) //f2 is 1.23
fmt.Printf("f2 is %.3f\n", f2) //f2 is 1.235
```
# Printf占位符
总结这里出现的占位符
| 占位符 | 描述 |
| :-: | :-:
| %d | 十进制数字 |
| %b | 二进制数字 |
| %o | 八进制数字 |
| %x | 十六进制数字 |
| %f | 浮点型数字(保留6位小数) |
| %.nf | 保留n位的小数(四舍五入) |
| %T | 变量的类型 |
# 思考
问题一:
```go
var i1 int8 = 16
i2 := int8(22)
var i3 int = 24
// 思考:下面两个赋值是否可以呢?
i1 = i2
i1 = i3
```
问题二:
```go
// 思考:f32和f64两个变量是否相等呢?
var f32 float32 = 1.23
var f64 float64 = 1.23
```
- Golang简介
- 开发环境
- Golang安装
- 编辑器及快捷键
- vscode插件
- 第一个程序
- 基础数据类型
- 变量及匿名变量
- 常量与iota
- 整型与浮点型
- 复数与布尔值
- 字符串
- 运算符
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 流程控制语句
- 获取用户输入
- if分支语句
- for循环语句
- switch语句
- break_continue_goto语法
- 高阶数据类型
- pointer指针
- array数组
- slice切片
- slice切片扩展
- map映射
- 函数
- 函数定义和调用
- 函数参数
- 函数返回值
- 作用域
- 函数形参传递
- 匿名函数
- 高阶函数
- 闭包
- defer语句
- 内置函数
- fmt
- strconv
- strings
- time
- os
- io
- 文件操作
- 编码
- 字符与字节
- 字符串
- 读写文件
- 结构体
- 类型别名和自定义类型
- 结构体声明
- 结构体实例化
- 模拟构造函数
- 方法接收器
- 匿名字段
- 嵌套与继承
- 序列化
- 接口
- 接口类型
- 值接收者和指针接收者
- 类型与接口对应关系
- 空接口
- 接口值
- 类型断言
- 并发编程
- 基本概念
- goroutine
- channel
- select
- 并发安全
- 练习题
- 第三方库
- Survey
- cobra