总结变量和数据类型(变量与数据类型)
【1】布尔类型也叫bool类型,bool类型数据只允许取值true和false
【2】布尔类型占1个字节。
【3】布尔类型适于逻辑运算,一般用于程序流程控制
【4】代码:
package main
import "fmt"
func main(){
//测试布尔类型的数值:
var flag01 bool = true
fmt.Println(flag01)
var flag02 bool = false
fmt.Println(flag02)
var flag03 bool = 5 < 9
fmt.Println(flag03)
}
【1】介绍:
字符串就是一串固定长度的字符连接起来的字符序列。
【2】字符串的使用:
package main
import "fmt"
func main(){
//1.定义一个字符串:
var s1 string = "你好全面拥抱Golang"
fmt.Println(s1)
//2.字符串是不可变的:指的是字符串一旦定义好,其中的字符的值不能改变
var s2 string = "abc"
// s2 = "def"
// s2[1] = t
fmt.Println(s2)
//3.字符串的表示形式:
//(1)如果字符串中没有特殊字符,字符串的表示形式用双引号
//var s3 string = "asdfasdfasdf"
//(2)如果字符串中有特殊字符,字符串的表示形式用反引号 ``
var s4 string = `
package main
import "fmt"
func main(){
//测试布尔类型的数值:
var flag01 bool = true
fmt.Println(flag01)
var flag02 bool = false
fmt.Println(flag02)
var flag03 bool = 5 < 9
fmt.Println(flag03)
}
`
fmt.Println(s4)
//4.字符串的拼接效果:
var s5 string = "abc" "def"
s5 = "hijk"
fmt.Println(s5)
//当一个字符串过长的时候:注意: 保留在上一行的最后
var s6 string = "abc" "def" "abc" "def" "abc" "def" "abc"
"def" "abc" "def" "abc" "def" "abc" "def" "abc" "def"
"abc" "def" "abc" "def" "abc" "def" "abc" "def" "abc"
"def" "abc" "def" "abc" "def" "abc" "def" "abc" "def"
"abc" "def" "abc" "def"
fmt.Println(s6)
}
【1】在Golang中数据类型都有一个默认值,当程序员没有赋值时,就会保留默认值(默认值又叫零值)。
【2】代码验证:
package main
import "fmt"
func main() {
var a int
var b float32
var c float64
var d bool
var e string
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
fmt.Println(d)
fmt.Println(e)
}
基本数据类型之间的转换
【1】Go在不同类型的变量之间赋值时需要显式转换,并且只有显式转换(强制转换)。
【2】语法:
表达式T(v)将值v转换为类型T
T : 就是数据类型
v : 就是需要转换的变量
【3】案例展示:
package main
import "fmt"
func main(){
//进行类型转换:
var n1 int = 100
// 在这里自动转换不好使,比如显式转换
// var n2 float32 = n1
fmt.Println(n1)
//fmt.Println(n2)
var n2 float32 = float32(n1)
fmt.Println(n2)
//注意:n1的类型其实还是int类型,只是将n1的值100转为了float32而已,n1还是int的类型
fmt.Printf("%T",n1) //int
fmt.Println()
//将int64转为int8的时候,编译不会出错的,但是会数据的溢出
var n3 int64 = 888888
var n4 int8 = int8(n3)
fmt.Println(n4)//56
var n5 int32 = 12
var n6 int64 = int64(n5) 30 //一定要匹配=左右的数据类型
fmt.Println(n5)
fmt.Println(n6)
var n7 int64 = 12
var n8 int8 = int8(n7) 127 //编译通过,但是结果可能会溢出
//var n9 int8 = int8(n7) 128 //编译不会通过
fmt.Println(n8)
//fmt.Println(n9)
}
【1】基本数据类型和string的转换介绍
在程序开发中,我们经常需要将基本数据类型转成string类型。或者将string类型转成基本数据类型。
【2】基本类型转string类型
方式1:fmt.Sprintf("%参数",表达式) ---》 重点练习这个,推荐方式
方式2:使用strconv包的函数
【3】代码测试:
方式一:
package main
import "fmt"
func main(){
var n1 int = 19
var n2 float32 = 4.78
var n3 bool = false
var n4 byte = a
var s1 string = fmt.Sprintf("%d",n1)
fmt.Printf("s1对应的类型是:%T ,s1 = %q
",s1, s1)
var s2 string = fmt.Sprintf("%f",n2)
fmt.Printf("s2对应的类型是:%T ,s2 = %q
",s2, s2)
var s3 string = fmt.Sprintf("%t",n3)
fmt.Printf("s3对应的类型是:%T ,s3 = %q
",s3, s3)
var s4 string = fmt.Sprintf("%c",n4)
fmt.Printf("s4对应的类型是:%T ,s4 = %q
",s4, s4)
}
方式二:
package main
import(
"fmt"
"strconv"
)
func main(){
var n1 int = 18
var s1 string = strconv.FormatInt(int64(n1),10) //参数:第一个参数必须转为int64类型 ,第二个参数指定字面值的进制形式为十进制
fmt.Printf("s1对应的类型是:%T ,s1 = %q
",s1, s1)
var n2 float64 = 4.29
var s2 string = strconv.FormatFloat(n2,f,9,64)
//第二个参数:f(-ddd.dddd) 第三个参数:9 保留小数点后面9位 第四个参数:表示这个小数是float64类型
fmt.Printf("s2对应的类型是:%T ,s2 = %q
",s2, s2)
var n3 bool = true
var s3 string = strconv.FormatBool(n3)
fmt.Printf("s3对应的类型是:%T ,s3 = %q
",s3, s3)
}
【1】string类型转基本类型
方式:使用strconv包的函数
【2】测试:
package main
import(
"fmt"
"strconv"
)
func main(){
//string-->bool
var s1 string = "true"
var b bool
//ParseBool这个函数的返回值有两个:(value bool, err error)
//value就是我们得到的布尔类型的数据,err出现的错误
//我们只关注得到的布尔类型的数据,err可以用_直接忽略
b , _ = strconv.ParseBool(s1)
fmt.Printf("b的类型是:%T,b=%v
",b,b)
//string---》int64
var s2 string = "19"
var num1 int64
num1,_ = strconv.ParseInt(s2,10,64)
fmt.Printf("num1的类型是:%T,num1=%v
",num1,num1)
//string-->float32/float64
var s3 string = "3.14"
var f1 float64
f1,_ = strconv.ParseFloat(s3,64)
fmt.Printf("f1的类型是:%T,f1=%v
",f1,f1)
//注意:string向基本数据类型转换的时候,一定要确保string类型能够转成有效的数据类型,否则最后得到的结果就是按照对应类型的默认值输出
var s4 string = "golang"
var b1 bool
b1 , _ = strconv.ParseBool(s4)
fmt.Printf("b1的类型是:%T,b1=%v
",b1,b1)
var s5 string = "golang"
var num2 int64
num2,_ = strconv.ParseInt(s5,10,64)
fmt.Printf("num2的类型是:%T,num2=%v
",num2,num2)
}
参考源码:https://gitee.com/cyzgw/golang-demo.git
参考原文:cyz
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。