Go语言基础之基本数据类型

193 阅读3分钟

直接上代码

package main

import (
	"fmt"
	"math"
)

func main() {
	// 整型
	fmt.Println("===整型===")
	// 十进制
	var a int = 10
	fmt.Printf("%d \n", a) // 10
	fmt.Printf("%b \n", a) // 1010  占位符%b表示二进制

	// 八进制  以0开头
	var b int = 077
	fmt.Printf("%o \n", b) // 77

	// 十六进制  以0x开头
	var c int = 0xff
	fmt.Printf("%x \n", c) // ff
	fmt.Printf("%X \n", c) // FF

	// 浮点型
	fmt.Println("===浮点型===")
	fmt.Printf("%f\n", math.Pi)
	fmt.Printf("%.2f\n", math.Pi)

	// 复数	复数有实部和虚部,complex64的实部和虚部为32位,complex128的实部和虚部为64位
	fmt.Println("===复数===")
	var c1 complex64
	c1 = 1 + 2i
	var c2 complex128
	c2 = 2 + 3i
	fmt.Println(c1)
	fmt.Println(c2)

	// 布尔值 Go语言中以bool类型进行声明布尔型数据,布尔型数据只有true(真)和false(假)两个值。
	// 布尔类型变量的默认值为false。
	// Go 语言中不允许将整型强制转换为布尔型.
	// 布尔型无法参与数值运算,也无法与其他类型进行转换。
	fmt.Println("===布尔值===")
	var t1 bool
	var t2 bool = true

	fmt.Println(t1, t2)

	// 字符串
	// Go语言中的字符串以原生数据类型出现,使用字符串就像使用其他原生数据类型(int、bool、float32、float64 等)一样。
	s1 := "hello"
	s2 := "你好"
	fmt.Println("===字符串===")
	fmt.Println(s1, s2)

	// 字符串转义符
	// Go 语言的字符串常见转义符包含回车、换行、单双引号、制表符等
	fmt.Println("===字符串转义符===")
	fmt.Println("\\r: 回车符(返回行首)")
	fmt.Println("\\n: 换行符(直接跳到下一行的同列位置)")
	fmt.Println("\\t: 制表符")
	fmt.Println("\\' : 单引号")
	fmt.Println("\\\\ : 反斜杠")

	// 字符串转义符
	// Go 语言的字符串常见转义符包含回车、换行、单双引号、制表符等
	fmt.Println("===字符串转义符===")
	fmt.Println("\\r: 回车符(返回行首)")
	fmt.Println("\\n: 换行符(直接跳到下一行的同列位置)")
	fmt.Println("\\t: 制表符")
	fmt.Println("\\' : 单引号")
	fmt.Println("\\\\ : 反斜杠")

	// 多行字符串
	// Go语言中要定义一个多行字符串时,就必须使用反引号字符
	s5 := `第一行
	第二行
	第三行
`
	fmt.Println(s5)

	// 字符串的常用操作
	fmt.Println("===字符串的常用操作===")
	fmt.Println("len(str): 求长度")
	fmt.Println("+或fmt.Sprintf: 拼接字符串")
	fmt.Println("strings.Split: 分割")
	fmt.Println("strings.contains' : 判断是否包含")
	fmt.Println("strings.HasPrefix,strings.HasSuffix : 前缀/后缀判断")
	fmt.Println("strings.Index(),strings.LastIndex() : 子串出现的位置")
	fmt.Println("strings.Join(a[]string, sep string) : join操作")

	// byte和rune类型
	//uint8类型,或者叫 byte 型,代表了ASCII码的一个字符。
	//rune类型,代表一个 UTF-8字符。
	fmt.Println("===byte和rune类型===")
	a1 := '中'
	b1 := 'x'
	fmt.Println(a1, b1)
	traversalString()

	// 类型转换
	//Go语言中只有强制类型转换,没有隐式类型转换。该语法只能在两个类型之间支持相互转换的时候使用。
	//强制类型转换的基本语法如下:
	//T(表达式)	其中,T表示要转换的类型。表达式包括变量、复杂算子和函数返回值等.
	fmt.Println("===类型转换===")
	sqrtDemo()
}

// 遍历字符串
func traversalString() {
	s := "hello沙河"
	for i := 0; i < len(s); i++ { //byte
		fmt.Printf("%v(%c) ", s[i], s[i])
	}
	fmt.Println()
	for _, r := range s { //rune
		fmt.Printf("%v(%c) ", r, r)
	}
	fmt.Println()
}

func sqrtDemo() {
	var a, b = 3, 4
	var c int
	// math.Sqrt()接收的参数是float64类型,需要强制转换
	c = int(math.Sqrt(float64(a*a + b*b)))
	fmt.Println(c)
}