- 正文榜首句:我正在参加创作者训练营第6期, 点击了解活动详情
一、根本数据类型的默认值:
一、根本介绍:
在Go中,数据类型都有一个默认值,当程序员没有赋值时,就会保留默认值,在Go中,默认值又叫零值。
二、根本数据类型的默认值如下:
数据类型 | 默认值 |
---|---|
整型 | 0 |
浮点型 | 0 |
字符串 | “” |
布尔类型 | false |
package main
import "fmt"
// 演示 golang 中 string 类型运用
func main() {
var a int //0
var b float32 //0
var c float64 //0
var isMarried bool //false
var name string // ""
// 这里的%v 表明依照变量的值输出
fmt.Printf("a=%d\nb=%f\nc=%f\nisMarried=%v\nname=%v\n", a, b, c, isMarried, name)
}
二、根本数据类型的相互转化:
一、根本介绍:
Golang 和 Java / C 不同,Go 在不同类型的变量之间赋值时需求显式转化。也便是说Golang 中数据类型不能自动转化。
二、根本语法:
表达式T(v)
将值v
转化为类型T
T:便是数据类型,比方int32 ,int64,float32
等等
v:便是需求转化的变量
三、案例演示:
package main
import "fmt"
// 演示 golang 中的数据类型的转化
func main() {
var i int = 100
// 期望将 i => float
var n1 float32 = float32(i)
var n2 int8 = int8(i)
var n3 int64 = int64(i) // 低精度-->高进度
fmt.Printf("i=%v n1=%v n2=%v n3=%v", i, n1, n2, n3)
}
四、根本数据类型相互转化的注意事项:
- Go 中,数据类型的转化可所以从,表明
规模小---->表明规模大
,也能够规模大---->规模小
。 - 被转化的是变量存储的数值(即值),变量本身的数据类型并没有变化。
- 在转化中,比方将int64,转化 int8【-128~127】,编译时不会报错,只是转化的成果是按溢出处理,和咱们期望的成果不相同。因此在转化时,需求考虑规模。
五、课堂操练:
package main
func main() {
// 课程操练,tab 按键收拾格局
var n1 int32 = 12
var n2 int64
var n3 int8
n2 = n1 + 20 //int32 ---> int64 过错
n3 = n1 + 20 //int32 ---> int8 过错
}
// int 32 + 最终成果仍是 int32
---------------------------------正 确 版 本--------------------------------
package main
import "fmt"
func main() {
// 课程操练,tab 按键收拾格局
var n1 int32 = 12
var n2 int64
var n3 int8
// n2 = n1 + 20 //int32 ---> int64 过错
// n3 = n1 + 20 //int32 ---> int8 过错
n2 = int64(n1) + 20
n3 = int8(n1) + 20
fmt.Println("n2=", n2, "n3=", n3)
}
package main
import "fmt"
func main() {
// 课程操练,tab 按键收拾格局
var n1 int32 = 12
var n2 int64
var n3 int8
n4 = int8(n1) + 127
n3 = int8(n1) + 128
fmt.Println(n4)
}
package main
import (
"fmt"
_ "unsafe" //假如咱们没有运用到一个包,但是有想要去掉,前面加一个 _ 表明疏忽。
)
三、根本数据类型和string的转化:
一、根本介绍:
在程序开发中,咱们经常讲根本数据类型转成String,或者将String 转成根本数据类型。
二、根本类型String类型:
办法一:
fmt.Sprintf("%参数",表达式)
函数介绍:
Sprintf依据format参数生成格局化的字符串并回来该字符串。
package main
import "fmt"
// 演示 golang 中根本数据类型转成string运用
func main() {
var num1 int = 99
var num2 float64 = 23.456
var b bool = true
var myChar byte = 'h'
var str string //空的str
// 运用榜首种办法转化 fmt.Sprintf 办法
str = fmt.Sprintf("%d", num1)
fmt.Printf("str type %T str=%v\n", str, num1)
// ==> str type string str=99
fmt.Printf("str type %T str=%q\n", str, num1)
// ==> str type string str='c'
str = fmt.Sprintf("%f", num2)
fmt.Printf("str type %T str=%v\n", str, str)
// ==> str type string str=23.456000
fmt.Printf("str type %T str=%q\n", str, str)
// ==> str type string str="23.456000"
str = fmt.Sprintf("%t", b)
fmt.Printf("str type %T str=%v\n", str, str)
fmt.Printf("str type %T str=%q\n", str, str)
str = fmt.Sprintf("%c", myChar)
fmt.Printf("str type %T str=%v\n", str, str)
fmt.Printf("str type %T str=%q\n", str, str)
}
参数需求和表达式的数据类型相匹配
fmt.Sprintf()..
会回来转化后的字符串
办法二:
运用strconv
包的函数
package main
import (
"fmt"
"strconv"
)
// 演示 golang 中根本数据类型转成string运用
func main() {
var num3 int = 99
var num4 float64 = 23.456
var b2 bool = true
var str string //空的str
// 运用第二种办法转化 strconv 办法
str = strconv.FormatInt(int64(num3), 10)
fmt.Printf("str type %T str=%q\n", str, str)
str = strconv.FormatFloat(num4, 'f', 10, 64)
// strconv.FormatFloat(num4, 'f', 10, 64)
// 阐明:'f' 格局
// 10:表明小时位数保留10位
// 64:表明这个小数是float 64
fmt.Printf("str type %T str=%q\n", str, str)
str = strconv.FormatBool(b2)
fmt.Printf("str type %T str=%q\n", str, str)
// strvonv 包中有一个函数
var num5 int64 = 4567
str = strconv.Itoa(int(num5))
fmt.Printf("str type %T str=%q\n", str, str)
}
三、string 类型转根本数据类型:
package main
import (
"fmt"
"strconv"
)
// 演示 golang 中string 转成根本数据类型
func main() {
var str string = "true"
var b bool
b, _ = strconv.ParseBool(str)
// go 会回来多个值
// func strconv.ParseBool(str string) (bool, error)
// 阐明:
// 1. strconv.ParseBool(str) 会回来另两个值 (value bool,err, error)
// 2. 由于我只想获取到value bool .不想获取到 err 所以我运用 _ 疏忽
fmt.Printf("b byte %T b=%v", b, b)
var str2 string = "1234590"
var n1 int64
var n2 int
n1, _ = strconv.ParseInt(str2, 10, 64)
// 这里阐明一下,ParseInt 办法回来int64,err,所所以不能运用int来接纳int64的这是强制规则的,能够去看一下文档
// 然后就说bitSize参数,这个参数是指定你所转化的数值能不能满意birSize规模巨细,假如不满意你指定的bitSize规模,那么err会得到过错信息
fmt.Printf("n1 byte %T n1=%v\n", n1, n1)
n2 = int(n1)
fmt.Printf("n1 byte %T n2=%v\n", n2, n2)
var str3 string = "123.456"
var f1 float64
f1, _ = strconv.ParseFloat(str3, 64)
fmt.Printf("f1 byte %T f1=%v\n", f1, f1)
}
四、string 转根本数据类型的注意事项:
在将string
类型转成根本类型时,要确保String
类型能够转化成有用数据,比方咱们能够把“123”,转成一个整数,但是不能把“hello”
转成一个整数,假如这样做,Golang 直接将其转成0,其它类型也是相同的道理,float ---->0 bool---->false