1.基本数据类型
布尔类型bool
- true
- false
var b1 bool
b1 = true
fmt.Printf("%T,%t\n", b1, b1)
b2 := false
fmt.Printf("%T,%t\n", b2, b2)
数值类型
- 整数
- 有符号: 最高位表示符号位,0正数,1负数,其余位表示数值
- int8:(-128 到 127)
- int16:(-32768 到32767)
- int32:(-2147483648 到 2147483647)
- int64:(-9223372036854775808 到 9223372036854775807)
- 无符号:所有的位表示数值
- uint8:(0 到 255)
- uint16:(0 到 65535)
- uint32:(0到 4294967295)
- uint64:(0到 18446744073709551615)
- byte <=> uint8
- rune <=> int32
类型推断定义数值时,默认是int类型
- 有符号: 最高位表示符号位,0正数,1负数,其余位表示数值
- 浮点:就是小数
- float32
- float64
- 复数:complex
// i2 = 200
// fmt.Println(i1)
// var i3 int64 = 1000
// GO语言中int 和 int64等,不是同一个类型
// i1 = i3 // cannot use i3 (variable of type int64) as type int8 in assignment
var i4 = 100
fmt.Printf("%T,%d\n", i4, i4)
var f1 float32
f1 = 2.22
var f2 float64
f2 = 3.1415
fmt.Printf("%T,%.1f\n", f1, f1)
fmt.Printf("%T,%.3f\n", f2, f2)
var f3 = 6.666
fmt.Printf("%T,%f\n", f3, f3)
string类型(字符串)
-
1.概念:多个byte的集合,理解为一个字符序列
-
2.语法:使用双引号"abc"、"hello"、"A"也可以使用
go
-
3.编码问题
计算机本质只识别0和1
A: 65,B:66,C:67.a:97,b:98..ASCII(美国标准信息交换码)
中国的编码表:加入了中文
gbk,兼容ASCII- 中
- 年
Unicode编码表:
号称统一了全世界UTF-8,UTF-16,UTF-32... -
4.转义字符:
- A:有一些字符,有特殊的作用,可以转义为普通的字符X
- B:有一些字符,就是一个普通的字符,转义后有特殊的作用
- \n:换行
- \t:制表符
/**
* @author ly (个人博客:https://www.cnblogs.com/qbbit)
* @date 2023/3/26 18:13
* @tags 喜欢就去努力的争取
*/
package main
import "fmt"
func main() {
var s1 string
s1 = "zs"
fmt.Printf("%T,%s\n", s1, s1)
s2 := "go"
fmt.Printf("%T,%s\n", s2, s2)
s3 := "`zs`"
fmt.Println(s3)
s4 := `"helloworld"`
fmt.Println(s4)
s5 := "hello \n wor \t ld"
fmt.Println(s5)
}
数据类型转换
语法格式:Type(value)
- 常数: 在有需要的时候,会自动转型
- 变量: 需要手动转型 T(V)
注意点:兼容类型可以转换
/**
* @author ly (个人博客:https://www.cnblogs.com/qbbit)
* @date 2023/3/26 19:07
* @tags 喜欢就去努力的争取
*/
package main
import "fmt"
func main() {
var a int8
a = 10
var b int16
b = 20
f1 := 3.14
f1 = float64(a)
fmt.Println(f1, a, b)
f2 := 6.66
a = int8(f2)
fmt.Println(a, f2)
}
2.符合数据类型
TODO......