基本数据类型
package main
import "fmt"
func main() {
/*
Go语言的数据类型
1. 基本数据类型
布尔类型:bool
取值:true、false
数值类型:
整数:int
有符号和无符号
int8 uint8
int16 uint16
int32 uint32
int64 uint64
默认长度取决于操作系统,32位则为int32,64位为int64
byte:uint8
rune:int32
浮点:小数
float32、float64
复数:complex
字符串:string
2. 复合数据类型
array、切片 slice、map、function、指针 pointer、
结构体 struct、interfce、通道 channel
*/
// 1. 布尔类型
var b1 bool
b1 = true
fmt.Printf("%T,%t\n", b1, b1)
b2 := false
fmt.Printf("%T,%t\n", b2, b2)
// 2. 整数
var i1 int8
i1 = 100
fmt.Println(i1)
var i2 uint8
i2 = 200
fmt.Println(i2)
var i3 int
i3 = 1000
fmt.Println(i3)
// 语法角度,int、int64 不认为是同一种类型
// var i4 int64
// i4 = i3 Cannot use 'i3' (type int) as type int64 in assignment
// fmt.Println(i4)
var i5 uint8
i5 = 100
var i6 byte
i6 = i5
fmt.Println(i5, i6)
//默认推断成 int
var i7 = 100
fmt.Printf("%T,%d\n", i7, i7)
//浮点
var f1 float32
f1 = 3.14
var f2 float64
f2 = 4.67
fmt.Printf("%T,%f\n", f1, f1) //默认保留6位小数,.2f可以保留两位
fmt.Printf("%T,%f\n", f2, f2) //直接打印的话,赋值几位就打几位
//默认推断 float64
var f3 = 2.55
fmt.Printf("%T\n", f3)
}
string类型与字符编码
package main
import "fmt"
func main() {
/*
字符串:
1. 概念:多个byte的集合,理解为一个字符序列
2. 语法:使用双引号
"abc"、"hello"、"A"
也可以使用:
``
3. 编码问题
计算机本质只识别 0 和 1
A:65,B:66
a:97,b:98
ASCII(美国标准信息交换码)
中国的编码表:gbk、兼容ASCII
Unicode编码表:号称统一了全世界
UTF-8,UTF-16,UTF-32
4. 转义字符 \
有一些字符有特殊的作用,可以转义为普通的字符
\'
一些普通字符转义后有特殊的作用
\n:换行
\t:制表符
*/
// 1. 定义字符串
var s1 string
s1 = "王二狗"
fmt.Printf("%T,%s\n", s1, s1)
s2 := "hello world"
fmt.Printf("%T,%s\n", s2, s2)
// 区别 'A'、"A"
v1 := 'A'
v2 := "A"
fmt.Printf("%T,%d\n", v1, v1) //是 int32 型
fmt.Printf("%T,%s\n", v2, v2)
v3 := '中'
fmt.Printf("%T,%d\n", v3, v3)
//3. 转义字符
fmt.Println("\"Hello World\"")
fmt.Println("Hello\nWorld")
fmt.Println("Hello\tWorld")
fmt.Println(`Hello"World"`)
fmt.Println("Hello`World`")
}
基本数据类型间的转换
package main
import "fmt"
func main() {
var a int8
a = 10
var b int16
b = int16(a)
fmt.Println(a, b)
// 只取整数部分
f1 := 3.14
var c int
c = int(f1)
fmt.Println(f1, c)
f1 = float64(a)
fmt.Println(f1, a)
//b1 := true
//a = int8(b1) 报错,布尔不能转成int8
// go语言是静态语言,定义,赋值,运算必须类型一致
// 常数有需要时自动转型,变量需要手动转型
// Type(Value)
sum := f1 + 100
fmt.Printf("%T,%f\n", sum, sum)
}
网友评论