golang 基础之数据类型
变量数据类型

整数类型

int8 超出地址范围
package main
import "fmt"
func main(){
var i int = 1
fmt.Println("i=",i)
var h int8 = -129
fmt.Println(h)
}
// 执行结果
// PS D:\golang\goproject\src\src01\go_code> go run src\chapter03\demo05\main.go
// # command-line-arguments
// src\chapter03\demo05\main.go:7:15: cannot use -129 (untyped int constant) as int8 value in variable declaration (overflows)
无符号

浮点型
基本介绍
golang的浮点类型可以表示一个小数,比如123.4,7.8,0.12

说明
1)关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位
示例
import (
"fmt"
// "unsafe"
)
func main(){
var price float32 = 89.32
fmt.Println("price=",price)
var num1 float32 = -0.00089
var num2 float64 = -76534567.09
fmt.Println("num1=",num1)
fmt.Println("num2=",num2)
}
// 执行结果
// price= 89.32
// num1= -0.00089
// num2= -7.653456709e+07
2)尾数位部分可能丢失,造成精度损失-123.0000901
示例
package main
import (
"fmt"
// "unsafe"
)
func main(){
// var price float32 = 89.32
// fmt.Println("price=",price)
// var num1 float32 = -0.00089
// var num2 float64 = -76534567.09
// fmt.Println("num1=",num1)
// fmt.Println("num2=",num2)
var num3 float32 = -123.0000901
var num4 float64 = -123.0000901
fmt.Println("num3=",num3,"num4=",num4)
}
// 执行结果
//num3= -123.00009 num4= -123.0000901
说明: flota64 精度比float32的要准确
说明:如果希望保存一个精度高的数,则应该选择float64位
3)浮点型的存储分为三部分:符号位+指数位+尾数位在存储过程中,精度会丢失
浮点型使用细节
1)golang 浮点型有固定的范围和字段长度,不受具体OS的影响
2)golang 的浮点型默认声明float64类型
package main
import (
"fmt"
// "unsafe"
)
func main(){
var num5 = 1.1
fmt.Printf("num5的数据类型是%T",num5)
}
// 执行结果
//num5的数据类型是float64
3)浮点型常量有两种表示形式
十进制数形式:如:5.12 .512 (必须有小数点)
package main
import (
"fmt"
// "unsafe"
)
func main(){
num6 := 5.12
num7 := .123
fmt.Println("num6=",num6,"num7=",num7)
}
// 执行结果
//num6= 5.12 num7= 0.123
科学计数法形式: 如:5.1234e2 = 5.12*10的2次方 5.12E-2 = 5.12/10的2次方
package main
import (
"fmt"
// "unsafe"
)
func main(){
num8 := 5.1234e2//5.1234e2 *10的2次方
fmt.Println("num8=",num8)
}
// 执行结果
//num8= 512.34
示例2
package main
import (
"fmt"
// "unsafe"
)
func main(){
num8 := 5.1234e2//5.1234e2 *10的2次方
num9 := 5.1234E2//5.1234e2 *10的2次方
num10 := 5.1234E-2//5.1234e2 /10的2次方
num11 := 5.1234e-2//5.1234e2 /10的2次方
fmt.Println("num8=",num8,"num9=",num9,"num10=",num10,"num11=",num11)
}
// 执行结果
//num8= 512.34 num9= 512.34 num10= 0.051234 num11= 0.051234
4)通常情况下,应该使用float64,因为它比float32更精确
字符类型
基本介绍
golang 没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存
package main
import "fmt"
func main(){
var c1 byte = 'a'
var c2 byte = '0'
// 当我们直接输出byte值,就是输出了对应的字符的码值
fmt.Println("c1=",c1)
fmt.Println("c2=",c2)
//如果我们希望输出对应字符,需要使用格式化输出
fmt.Printf("c1 = %c c2 = %c\n", c1,c2)
var c3 int = '北'
fmt.Println("c3=",c3)
fmt.Printf("c3=%c",c3)
}
// 执行结果
// c1= 97
// c2= 48
//c1 = a c2 = 0
// c3= 21271
// c3=北
说明:1)如果我们保存的字符在ASCII表的,比如[0~1,a-z,A-Z]直接可以保存到byte
2)如果我们保存的字符对应码值大于255,这时我们可以考虑使用int类型保存
3)如果我们需要按照字符的方式输出,我们需要格式化输出即fmt.Printf("c3=%c",c3)
字符串就是一串固定长度的字符连接起来的字符序列,Go的字符串是由单个字节链接起来的,也就是说对于传统的字符串是由字符组成的,而go的字符串不同,是由字节组成[官方将string归属到基本数据类型]
字符类型使用细节
1)字符常量是用单引号''括起来的单个字符。例如var c1 byte = 'a'
2) Go 中允许使用转义字符'\'来将其后面的字符转变为特殊字符型常量。例如,var c3 char = "\n" // '\n'表示换行符
3) Go 语言的字符使用UTF-8 编辑
4) 在Go中,字符的本质是一个整数,直接输出时,是该字符对应该的UTF-8编码的码值
5)可以直接给某个变量赋值一个数字,然后按格式化输出时%c会输出该数字对应的unicode
6) 字符类型是可以进行运算的,相当于一个整数,因为它对应有Unicode

浙公网安备 33010602011771号