类型介绍
bool类型
布尔类型的值只可以是true或者false
数值类型
整数型
- int8 有符号 8 位整型(-128到 127) 长度:8bit
- int16 有符号 16 位整型(-32768 到32767)
- int32 有符号 32 位整型(-2147483648 到 2147483647)
- int64 有符号 64 位整型(-9223372036854775808 到 9223372036854775807)
- uint8 无符号 8 位整型(0 到 255) 8位都用于表示数值
- uint16 无符号 16 位整型(0 到 65535)
- uint32 无符号 32 位整型(0 到4294967295)
- uint64 无符号 64 位整型(0 到18446744073709551615)
有符号数第一位代表数值是正数或者负数,在相同位数下无符号数的绝对值范围是有符号数的2倍,我们常用的int类型其实是一个动态类型,根据我们的操作系统来的,如果操作系统是64位那它就是int64
func main(){
var a int8
var b int16
// 必须类型转化,超过最大值会丢失精度
a = int8(b)
}
浮点数
- float32 32位浮点型数
- float64 64位浮点型数
其他
- byte 等于 uint8
- rune 等于 int32
- uint 32 或 64位
byte
func main(){
var c byte // 主要适用于存放字符
c = 'a' // 单引号是字符,双引号是字符串
// 97
fmt.Println(c)
// c=a
fmt.Printf("c=%c", c)
c1 := 97
// c=a
fmt.Printf("c1=%c", c1)
c = c + 1 // c的本质是97
// c=b
fmt.Printf("c1=%c", c)
}
rune
func main(){
var c2 rune // 也是字符,除英文之外的,中文,韩文等
c2 = '干'
// 24178
fmt.Println(c2)
}
基本类型转换
简单的转换操作
valueOfTypeB = typeB(valueOfTypeA)
func main(){
a := 3.1
// 转换成int类型
b := int(a)
// 3
fmt.Println(b)
// Go允许在底层结构相同的两个类型之间相互转换
// TT相当于int类型的别名
type TT int
var a1 TT = 5
b1 := int(a1)
c1 := TT(b1)
// 字符串转数字
var str = "123"
myint, err := strconv.Atoi(str)
if err != nil{
fmt.Println("error")
}
// 123
fmt.Println(myint)
// 数字转字符串 没有err,默认不可能出错
var num = 123
mystr := strconv.ItoA(num)
// "123"
fmt.Println(mystr)
}
fomat进行格式化转换
func main(){
myfloat, err := strconv.ParseFloat("123", 64)
if err != nil{
return
}
myint, err := strconv.ParseInt("123", 10, 64)
if err != nil{
return
}
// bool零值为false 0 || "false" => false 1||"true" => true
mybool, err := strconv.ParseBool("true")
if err != nil{
return
}
fmt.Println(myfloat, myint, mybool)
// 基本类型转字符串
boolstr := strconv.FormatBool(true)
fmt.Println(boolstr)
// 3.1415E+00
floatstr := strconv.FormatFloat(3.1415, 'E', -1, 64)
fmt.Println(floatstr)
floatint := strconv.FormatInt(-42, 16)
//-2a
fmt.Println(floatint)
}
运算符和表达式
基本上和js大同小异