2022-01-23

值类型:基本数据类型int系列,float系列,bool,string,数组,结构体struct。

引用类型:指针,切片slice,map,interface,管道chan等都是引用类型

基本数据类型

整型

两类

有符号整数

int8、int16、int32、int64 

无符号整数

uint8、uint16、uint32、uint64

特别的整型:uint,int,uintptr

前两种类型:随着操作系统是多少位,就是多少位的类型

最后一个为无符号整型:用于存放一个指针

数字字面整型:

fmt.Printf("%__", 变量名)

八进制:%o

十六进制:%x |%X

二进制:%b

十进制:%d

八进制以0开头

十六进制0x开头

浮点数

float32

float64

复数

complex64

complex128

布尔值

true

false

字符串转义符

字符串

utf-8

                s1 := "你好"

fmt.Println(s1)

//字符串转义符

fmt.Println("str = \"E:\\GOPROJECT\\go.exe\"")

//多行字符串

s2 := `第一行

  第二行

  第三行`

fmt.Println(s2)


字符串常用操作

长度:len(str)

拼接:+,fmt.Sprintf

分割:strings.Split

是否包含:strings.contains(str,"xxx")

开头:strings.HasPrefix(str, "xx")

结尾:stings.HasSuffix(str,"d")

首次出现位置:strings.Index(str,"x")

最后:strings.LastIndex(str,"x")

出现次数:stings.Count

重复:strings.Repeat(str,2)

转大写:strings.ToLower()

小写:strings.ToUpper()

链接切片Join(str,"-")

去掉字符串首/尾部指定的字符:TrimLeft(str,"x"):TrimRight(str,"x")

去掉收尾的空格:TrimSpace(str2)

                str2 := "  hello world tt"

//去掉字符串首尾指定的字符

fmt.Println(strings.Trim(str2,"t")) //  hello world

fmt.Println(strings.Trim(str2,"ttt")) //注意相同的字母即时数量比str的多也能去掉  hello world

fmt.Println(strings.Trim(str2,"  ")) //去除首尾空格hello world tt

fmt.Println(strings.Trim(str2,"b")) //没有b时不报错返回原字符串  hello world tt


字符

byte---uint8

rune

                //遍历字符串

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)

  }

  104(h)101(e)108(l)108(l)111(o)230(æ)178(²)153(NUll)230(æ)178(²)179(³)

  104(h)101(e)108(l)108(l)111(o)27801(沙)27827(河)

  fmt.Println()

}


因为UTF8编码下一个中文汉字由3~4个字节组成,所以我们不能简单的按照字节去遍历一个包含中文的字符串,否则就会出现上面输出中第一行的结果。

字符串底层是一个byte数组,所以可以和[]byte类型相互转换。字符串是不能修改的 字符串是由byte字节组成,所以字符串的长度是byte字节的长度。 rune类型用来表示utf8字符,一个rune字符由一个或多个byte组成。

修改字符串

字符串是不可修改的,任何修改,都会重新分配内存

                func changeString() {

    s1 := "big"

    byteS1 = []byte(s1)

    byteS1[0]:= 'p'

    fmt.Println(sting(byteS1))

    s2 := "白萝卜"

    runeS2 := []rune(s2)

    runeS2[0] = '红'

    fmt.Println(string(runeS2))

}


类型转换

只有强制类型转换

T(表达式)  T:要转换的类型 表达式:变量,复杂算子,函数返回值

                //类型转换

func sqrtDemo() {

  var a, b = 3, 4

  var c int

  // math.Sqrt():开方 参数为浮点型 强制类型装换

  c = int(math.Sqrt(float64(a*a + b*b)))

  fmt.Printf("%d", c)

}

你可能感兴趣的:(2022-01-23)