Go学习笔记-基本数据类型
基本介绍
在Go中,数据类型都有一个默认值,当程序没有赋值是,就会保留默认值,又叫零值。
默认值
数据类型 | 默认值 |
---|---|
整型 | 0 |
浮点型 | 0 |
字符串 | “” |
布尔型 | false |
相互转换
Go在不同类型的变量之间赋值时需要显示转换即不能自动转换。
package main
import (
"fmt"
)
func main() {
var a int = 22
var b float32 = float32(a)
var c int8 = int8(a)
fmt.Printf("a的类型%T,a的值%v\n", a, a)
fmt.Printf("b的类型%T,b的值%v\n", b, b)
fmt.Printf("c的类型%T,c的值%v\n", c, c)
}
PS E:\go_code\src\note> go run .\bool.go
a的类型int,a的值22
b的类型float32,b的值22
c的类型int8,c的值22
注意事项
- Go中,数据类型的转换可以从 范围小->范围大 ,也可以范围大->范围小。
- 被转换的是变量存储的数据(值),变量本身的数据类型并没有变化!!!
- 在转换中,如将int64转成int8,编译时不会报错,只是转换的结果是按照溢出处理,和我们希望的结果不一样,所以转换时需要考虑范围。
package main
import "fmt"
func main() {
var a = 99999
var b int8 = int8(a)
fmt.Println(b)
}
所得结果溢出,非原数值。
PS E:\go_code\src\note> go run .\bool.go
-97
基本数据类型和string的转换
- 方式1 : fmt.Sprintf("%参数", 表达式)
package main
import "fmt"
func main() {
var a = 1
var b float64 = 3.14
var c bool = false
var d byte = 'k'
var strRes string
strRes = fmt.Sprintf("%d", a)
fmt.Printf("strRes的类型:%T 值是:%v\n", strRes, strRes)
strRes = fmt.Sprintf("%f", b)
fmt.Printf("strRes的类型:%T 值是:%v\n", strRes, strRes)
strRes = fmt.Sprintf("%t", c)
fmt.Printf("strRes的类型:%T 值是:%v\n", strRes, strRes)
strRes = fmt.Sprintf("%c", d)
fmt.Printf("strRes的类型:%T 值是:%v\n", strRes, strRes)
}
PS E:\go_code\src\note> go run .\bool.go
strRes的类型:string 值是:1
strRes的类型:string 值是:3.140000
strRes的类型:string 值是:false
strRes的类型:string 值是:k
- 方式2:使用strconv包的函数
string转基本数据类型的注意事项
在将string类型转成基本数据类型是,要确保string类型能够转成有效的数据,比如,我们可以把"123",转成一个整数,但是不能把"hello"转成一个整数,如果这样做,Go直接将其转成0。