go基础2-基本数据类型
go语言有丰富的数据类型,除了整型 浮点型 字符串 外 还有 数组 切片 机构体 函数 map 通道(channel) //切片像php的数组
一 整型
整型分为2大类 int8 int16 int32 int64 无符号加u uint8 uint16 uint32 uint64,
类型 | |
uint 8 无符号 8位整型 2的8次方-1 (0到255) | |
uint16 无符号 65535 | |
uint32 | |
uint64 | |
int8 有符号 8位整型 -2的四次方到2的四次方-1 (-128到127) | |
int16 | |
int32 | |
int64 |
2 特殊整型
uint 32位操作系统 uint32 64位操作系统 uint64
int int32 int64
uintptr 无符号整型 用于存放一个指针
获取对象长度 函数 len()
2.2 数字字面量语法 number literals syntax
go1.13版本之后引入了数字字面量语法 这样便于开发者已二进制,八进制 或十六进制 浮点数的格式定义数字 八进制以0开头 十六进制以 0x开头
v:=0boo101101 代表二进制 101101 等于十进制45 v=123_456 等于123456 v0o377 代表八进制377 相当于十进制255 搞懂 二进制和十进制换算即可
占位符 %d 10进制 %b 表示二进制 %o 八进制 %x 十六进制
var a int = 10
fmt.Println("%d",a)
fmt.Printf("%b",a)
三, 浮点型
go支持二种浮点型 float32 float64, 可以使用常量定义最大值 math.MaxFloat32 math.MaxFloat64 浮点占位符 %f
package main import ( "fmt" "math" ) func main(){ fmt.Printf("%f",math.Pi) }
四,复数
complex64和complex128 第一次接触这种类型
var c1 complex64 c1= 1+2i var c2 complex128 c2 = 2+3i //i代表什么 我不知道 fmt.Println(c1) fmt.Println(c2)
复数有实部和虚部 complex64的实部和虚部为32位
五,布尔值
go语言的bool 类型 var a bool
值只有true 和false
注意:布尔值默认为false
go 不容许将整型强制转换为布尔型
布尔型无法参与数值运算 也无法与其他类型进行转换
六,字符串
var s string = "nihao" s2:="你好"
字符串转义符 \r \n \t \' \" \\
fmt.Println("str :=\" c:\\code\\go.exe\"")
6.2 多行字符串 用 反引号 ··
s1 := `第一行
第二行
第三行
`
6.3 字符串 常见操作 len(str)
+ fmt.Sprintf() 拼接字符串
string.Split 分割
stings.contains 判断是否包含
srings.HasPrefix strings.HasSuffix 前缀/后缀判断
srings.Index() strings.LastIndex 子字符串出现的位置
strings.Join(a[]sringm,sep sring) join操作
七 byte和rune类型
byte 字符 :组成每个字符串的元素 字符用 单引号 ' ' 包起来 例
var a :='中'
var b := 'x'
go语言的字符有 uint8 代表ascii的一个字符 和 rune utf-8字符 2种类型
rune实际是是一个 int32
//遍历字符串
func traversalStirng(){
s:="hello沙雕";
for i :=0; i < len(s);i++{
fmt.Printf("%v(%c)",s[i],s[i])
}// 无法打印汉字出来
fmt.Println()
for _,r := range s{
fmt.Printf("%v(%c)",r,r)
}
}//输出 104(h) 101(e) 108(l) 108(l) 111(o) 27801(沙) 27827(雕)
因为utf8 中文汉字是由3-4个字符组成
字符串底层是一个 byte数组 所以可以和 []byte 类型相互转换
7.1 修改字符串
要修改字符串 先要将其转换为 []rune 或 []byte 完成后再转换为string
func changeString(){
s1 := "big"
byteS1 := []byte(s1)
byteS1[0] = 'p'
fmt.PrintLn(stirng(byteS1))
s2:= "红萝卜"
runeS2 := []rune(s2)
runeS2[0] = '白'
fmt.PrintLn(string(runeS2))
}
八 类型转换
go只有强制类型转换 没有隐身类型转换
语法如下
T(表达式) T表示要转换的类型 表达式包括变量 复杂算术 和函数返回值等
math.Sqrt() 计算直角三角形的斜边长
该函数接收的参数为 float64
func spqtDemo(){
var a,b = 3,4
var c int
c = int(math.Sqrt(float64(a*a + b*b)))
}
//每天一篇的进度 赖下了一篇 要努力