3.数据类型

Go基础——数据类型和运算符_golang


Go基础——数据类型和运算符_字符串_02

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整型

Go基础——数据类型和运算符_运算符_03


3.2.2特殊整型

Go基础——数据类型和运算符_golang_04

//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算数运算符

Go基础——数据类型和运算符_字符串_05

//算数运算符
	a := 10
	b := 20
	c := 3
	fmt.Println(b + a)
	fmt.Println(a / c)
	fmt.Println(a % c)
	//a++
	//a--是单独的语句,不是运算符

a++ a–是单独的语句,不是运算符

4.2关系运算符

Go基础——数据类型和运算符_运算符_06

//关系运算符
	fmt.Println("==, !=, > >= < <=")

4.3逻辑运算符

Go基础——数据类型和运算符_整型_07

//逻辑运算符
	//&&  ||   !

4.4位运算符

Go基础——数据类型和运算符_运算符_08

//位运算符
	//&       |       ^     <<左移   >>右移
	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赋值运算符

Go基础——数据类型和运算符_整型_09