
6.基本数据类型
基本数据类型
Go语言是一种静态类型的编程语言, 在Go编程语言中, 数据类型用于声明函数和变量. 数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存, 就可以充分利用内存, 编译器在进行编译的时候, 就要知道每个值的类型, 这样编译器就知道要为这个值分配多少内存, 并且知道这段内存表示什么
1.布尔型
布尔型的值只可以是常量true或者false, 一个简单的例子: var b bool = true
func main(){
var b1 bool
var b2 bool
b1 = true
b2 = false
fmt.Printf("@T,@t\n",b1,b2)
fmt.Printf("%T,%t\n",b2,b2)
}
2.数值型
整型int和浮点型float32, float64, Go语言支持整型和浮点型数字, 并且支持复数, 其中位的预算采用补码
Go也有基于架构的类型, 例如: uint无符号, int有符号
序号 | 类型 | 描述 |
---|---|---|
1 | uint8 | 无符号8位整型(0到255) |
2 | uint16 | 无符号16位整型(0到65535) |
3 | uint32 | 无符号32位整型 |
4 | uint64 | 无符号64位整型 |
5 | int8 | 有符号8位整型 |
6 | int16 | 有符号16位整型 |
7 | int32 | 有符号32位整型 |
8 | int64 | 有符号64位整型 |
浮点型
序号 | 类型 | 描述 |
---|---|---|
1 | float32 | IEEE-754 32为浮点型数 |
2 | float64 | IEEE-754 64位浮点型数 |
3 | complex64 | 32位实数和虚数 |
4 | complex128 | 64位实数和虚数 |
- 关于浮点数在机器中存放形式的简单说明, 浮点数 = 符号位 + 指数位 + 尾数位
- 尾数部分可能丢失, 造成精度损失.
说明:
- float64的精度要比float32的要准确
- 如果我们要保存一个精度高的数, 则应该选择float64
- golang的浮点型默认为float64类型
- 通常情况下, 应该使用float64, 因为它比float32更准确
以下列出了其他更多的数字类型
序号 | 类型和描述 |
---|---|
1 | byte类似uint8 |
2 | rune类似int32 |
3 | uint32或64位 |
4 | int与uint一样大小 |
5 | uintptr无符号整形, 用于存放一个指针 |
3.字符串型
package main
import "fmt"
func main() {
var str string
str = "Hello, zjzaki"
fmt.Printf("%T, %s\n", str, str)
//单引号
v1 := 'A'
v2 := "A"
// 编码表 ASCII字符码
// 中国字编码: GBK
// 全世界编码表: Unicode编码表
fmt.Printf("%T, %s\n", v1, v1)
fmt.Printf("%T, %s\n", v2, v2)
// 字符串连接
fmt.Println("Hello" + " Zjzaki")
//转义字符 \
fmt.Printf("hello\"zjzaki")
}
4.数据类型转换
在必要以及可行的情况下, 一个类型的值可以转换成另一种类型的值. 由于Go语言不存在隐式类型转换, 因此所有的转换类型都必须显式的声明:
valueOfTypeB = typeB(valueOfTypeA)
类型B的值 = 类型B(类型A的值)
package main
import "fmt"
func main() {
a := 3 //int
b := 5.0
// 将int类型的a转换成float64 类型转换
c := float64(a)
d := int(b)
//报错
e := bool(a)
fmt.Printf("%T\n", a)
fmt.Printf("%T\n", b)
fmt.Printf("%T\n", c)
fmt.Printf("%T\n", d)
}
类型转换只能正确的情况下转换成功, 例如从一个取值范围较小的类型转换到一个取值范围较大的类型(将int16转换为int32). 当从一个取值范围较大的类型转换到取值范围较小的类型时(将int32转换为int16或将float32转换为int), 会发生进度丢失(截断)的情况.
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果