3.数据类型
go基本数据类型
3.1进制转换
十进制打印为2进制
// 十进制打印为2进制
n := 10
fmt.Printf("%b\n", n)
fmt.Printf("%d\n", n)
//八进制
m := 075 //八进制
fmt.Printf("%d\n", m) //十进制
fmt.Printf("%o\n", m)
//十六进制
f := 0xff
fmt.Print(f)
fmt.Printf("%x\n", f)
3.2基本数据类型
整型 浮点型 字符串 布尔值 复数
3.2.1整型
3.2.2特殊整型
//uint8 0~255
var age uint8
fmt.Println(age)
//浮点数
fmt.Println(math.MaxFloat32)
fmt.Println(math.MaxFloat64)
//复数
//complex64和complex128
//complex64实部和虚部是32位,complex128实部和虚部是64位
var c1 complex64
c1 = 1 + 2i
var c2 complex128
c2 = 4 + 3i
fmt.Println(c1)
fmt.Println(c2)
c3 := 2 + 2i
fmt.Println(c3)
//布尔值默认为false
var is_ok bool
is_ok = true
isOk := true
fmt.Println(isOk, is_ok)
//布尔值默认为false
//go不允许将整型强制转化为布尔型
//无法参与数值计算,也无法与其他类型进行转换
//布尔值默认为false
//go不允许将整型强制转化为布尔型
//无法参与数值计算,也无法与其他类型进行转换
3.3字符串操作
//字符串
s1 := "xiaoshenng"
s2 := "hello"
fmt.Println(s1, s2)
//拼接字符串
//fmt.println(s1 + s2)
s3 := "this is my blog"
s4 := fmt.Sprintf("%s-%s", s3, s1)
fmt.Println(s4)
//字符串分割
fmt.Println(strings.Split(s3, " "))
//判断是否包含
fmt.Println(strings.Contains(s4, "gg"))
//判断前缀
fmt.Println(strings.HasPrefix(s4, "hh"))
//判断后缀
fmt.Println(strings.HasSuffix(s4, "ho"))
//子串出现位置索引
fmt.Println(strings.Index(s4, "i"))
//最后子串出现位置
fmt.Println(strings.LastIndex(s4, "en"))
//join
s5 := []string{"how", "do", "you"}
fmt.Println(s5)
fmt.Println(strings.Join(s5, "-"))
3.4字符
byte和rune类型
当需要处理中文、日文或者其他复合字符时,则需要用到rune
类型。
Go 使用了特殊的 rune 类型来处理 Unicode,让基于 Unicode 的文本处理更为方便,也可以使用 byte 型进行默认字符串处理,性能和扩展性都有照顾。
//字符
//提高代码可读性
//byte uint8别名 ascii码
//rune int32别名
var cs1 byte = 'b'
var cs2 rune = 'b'
fmt.Println(cs1, cs2)
fmt.Printf("cs1:%T cs2:%T\n", cs1, cs2)
//遍历数组
st := "hello小生"
/*会乱码
for i := 0; i < len(st); i++ {
fmt.Printf("%c\n", st[i])
}*/
for _, r := range st {
fmt.Printf("%c\n", r)
}
3.3类型转换
Go语言中只有强制类型转换,没有隐式类型转换。该语法只能在两个类型之间支持相互转换的时候使用。
one := 3
other := 5 //接收的是float64类型的参数,而变量a和b都是int类型的,这个时候就需要将a和b强制类型转换为float64类型。
another := int(math.Sqrt(float64(one*one + other*other)))
fmt.Println(another)
3.4修改字符串
str := "上仙s"
temp := []rune(str)
temp[0] = '下'
fmt.Println(temp)
str2 := "xiaosheng"
temp2 := []byte(str2)
temp2[0] = 'r'
fmt.Println(temp2)
fmt.Println(string(temp2))
4.运算符
4.1算数运算符
//算数运算符
a := 10
b := 20
c := 3
fmt.Println(b + a)
fmt.Println(a / c)
fmt.Println(a % c)
//a++
//a--是单独的语句,不是运算符
a++ a–是单独的语句,不是运算符
4.2关系运算符
//关系运算符
fmt.Println("==, !=, > >= < <=")
4.3逻辑运算符
//逻辑运算符
//&& || !
4.4位运算符
//位运算符
//& | ^ <<左移 >>右移
aa := 1 //001
bb := 5 //101
fmt.Println(aa & bb) //001 =》 1
fmt.Println(aa | bb) //
fmt.Println(1 << 2) //4
fmt.Println(1 << 10) //1024
4.5赋值运算符