package main
import (
"fmt"
// "strings"
)
// import "math"
func main() {
// int8 16 32 64 uint
// a := 10
// b := 0b1010 // 表示二进制1010
// c := 037 // 表示八进制37
// d := 0x55 // 表示十六进制55
// e := 0x28p-3 // 表示十六进制22数除以2的3次方(p-3)
// f := 123_56 // 表示12356 _ 分隔数字 为了方便阅读
// fmt.Println(a, b, c, d, e, f)
// a := 20
// fmt.Printf("%d \n", a)
// fmt.Printf("%b \n", a)
// fmt.Printf("%o \n", a)
// fmt.Printf("%x \n", a)
// float32 64
// fmt.Printf("%f \n", math.Pi)
// fmt.Printf("%.2f \n", math.Pi)
// complex64 虚部 实部都是32位
// complex128 虚部 实部都是64位
// c1 := 1 + 2i
// var c1 complex64
// c1 = 1 + 2i
// c2 := 2 + 3i
// var c2 complex128
// c2 = 2 + 3i
// fmt.Println(c1)
// fmt.Println(c2)
// 布尔值默认为false 不允许将整型强转布尔型 不能参与运算 也不能与其他类型进行转换
// var yflag bool
// fmt.Println(yflag)
// 字符串 " " 默认使用UTF-8编码 Print Println Printf
// s1 := "嗨"
// s2 := "Hello World"
// fmt.Printf(s1 + "\n")
// fmt.Printf(s2)
// fmt.Print("test")
// fmt.Println(s1, s2)
// a := 1
// var b bool
// c := true
// if d := 2 > 1;d {
// fmt.Println("test")
// } else {
// fmt.Println("ok")
// }
// 转移符 \r \n \t \' \" \\
// fmt.Println("str := \"d:\\go\\src\"")
// 多行字符串 ` ` 转义符无效 原样输出
// s4 := `
// 今天
// 是个
// 好天气
// `
// fmt.Println(s4)
// 字符串常见操作
// len(str) 求字符串长度
// + 或者 fmt.Sprintf 字符串拼接
// 需要导入strings 包
// strings.Split 分割
// strings.Contains 判断是否包含某字符串 返回布尔值
// HasPrefix 判断是否以字符串开头
// HasSuffix 判断是否以字符串结尾
// Index 字符串出现的位置
// LastIndex 字符串最后出现的位置
// Join 连接数组或切片中元素
// s5 := "Ropon"
// fmt.Println(len(s5))
// fmt.Println("I am " + s5)
// fmt.Println(fmt.Sprintf("I am %s", s5))
// fmt.Println(strings.Split(s5, "o"))
// fmt.Println(strings.Contains(s5, "o"))
// fmt.Println(strings.HasPrefix(s5, "Ro"))
// fmt.Println(strings.HasSuffix(s5, "n"))
// fmt.Println(strings.Index(s5, "o"))
// fmt.Println(strings.LastIndex(s5, "o"))
// s6 := "is Good!"
// fmt.Println(strings.Join([]string{s5, s6}, " "))
// byte rune实际是int32
// 英文字母 1个字节 中文汉字 3个字节
// s1 := "Hello"
// c1 := 'H'
// s2 := "我爱你中国"
// c2 := '我'
// fmt.Println(s1, c1, len(s1))
// fmt.Println(s2, c2, len(s2))
// 遍历字符串
// s1 := "Hello哥哥"
// for i := 0; i < len(s1); i ++ {
// fmt.Printf("%c\n", s1[i])
// }
// for _, r := range s1 {
// fmt.Printf("%c\n", r)
// }
// 修改字符串
// s1 := "niubi"
// 类型转换 T(表达式) T表示需要转换的类型 表达式包括变量 复杂算子 函数返回值
// %T 打印变量类型
// byteA := []byte(s1)
// byteA[0] = 'x'
// fmt.Println(string(byteA))
// s2 := "我爱你"
// runeA := []rune(s2)
// runeA[0] = '你'
// fmt.Println(string(runeA))
// a := 1
// b := 1.25
// s1 := "我们不一样"
// var f bool
// fmt.Printf("%T\n",a)
// fmt.Printf("%T\n",b)
// fmt.Printf("%T\n",s1)
// fmt.Printf("%T\n",f)
// 统计字符串 "Hello我们不一样,每个人都不一样Nb。" 中汉字的数量
s1 := "Hello我们不一样,每个人都不一样Nb。"
byteA := []byte(s1)
runeA := []rune(s1)
fmt.Println(byteA)
fmt.Println(runeA)
}