基本数据类型

go的数据类型:

​ 整型、浮点型、字符串、数组、结构体、切片、切片、函数、map、通道(channel)

01 整型

可以分为两种:有符号和无符号

  • 有符号整型:

int:32位系统,是int32,64位系统是int64,是计算最快的类型

int8:-128——127

int16:-32768——32767

int32:-2147483648——2147483647

int64:-9223372036854775808 -> 9223372036854775807

  • 无符号整型

uint: 32位系统,是uint32,64位系统是uint64

uint8:0——255

uint16:0——65535

uint32:0——4294967295

uint64:0——18446744073709551615

uintptr:无符号整型,用于存放一个指针

02 浮点型

只有folat32和folat64,一般尽可能用float64,math中的函数都要求接收这个类型。

float32最大的范围:math.MaxFloat32

float64最大的范围:math.MaxFloat64

  • 复数

z = a + bi

complex64:虚部和实部为32位

complex128:虚部和实部为64

03 布尔值

bool,只有true和false

注意:

​ 其他类型不能转化为布尔值

​ 不能用于运算

04 字符串

string 以双引号括起来的字符,如果是多行时,用反引号``括起来

转意符:/,一般用在:回车键\r、换行符\n、 制表符\t、 双引号"、 反斜杠/

  • 常用方法

len 字符串的字节长度,中文占三个字节、数字和字母占一个字节

package main

import "fmt"

func main() {
  name := "lynn"
  message := "中国人"
  fmt.Println(len(name))  // 结果是4
  fmt.Println(len(message))  // 结果是9
} 

字符串拼接

// 01 直接加

package main

import "fmt"

func main() {
  name := "lynn"
  message := " is 18"
  fmt.Println(name + message)  //  结果lynn is 18
}

// 02 fmt.Sprintf()

func mian() {
  name := "lynn"
  message := " %s is 18"
  fmt.Println(fmt.Sprintf(message, name))
}

包含****strings.Contains()

结果是布尔值

package main

import fmt

func main() {
  message := "lynn is 18"
  fmt.Println(strings.Contains("lynn", message))
}

判断前缀,后缀

strings.HasPrefix()、strings.HasSuffix()

结果是布尔值

package main

import fmt

func main() {
  message := "lynn is 18"
  fmt.Println(strings.HasPrefix(message, "lynn"))
  fmt.Println(strings.HasSuffix(message, "18"))
}

查看子字符串位置(索引

strings.Index() 从左到右第一次出现的位置

strings.LastIndex() 从右向左第一次出现的索引

package main

import fmt

func main() [
  message := "lynn is 18"
  fmt.Println(strings.Index(message, "n"))
  fmt.Println(strings.LastIndex(message, "n"))
]

查看子字符有几个

strings.Count()

package main

import "fmt"

func main() {
  message := "lynn is 18"
  fmt.Println(strings.Count(message, "n")) // 结果是2
}

切分

strings.Split()

package main

import "fmt"

func mian() {
  message := "lynn is 18"
  fmt.Println(strings.Split(message, " ")) // [lynn is 18]
}

替换

strings.Replace()

strings.ReplaceAll()

package mian

import "fmt"

func mian() {
  message := "lynn 是 18"
  fmt.Println(strings.Replace(message, "是", "is", 1)) // 结果是lynn is 18,注意所有参数必填
  fmt.Println(strings.ReplaceAll(message, "是", "is"))
}

变大写、变小写

strings.ToLower()

strings.ToUpper()

package main 

import "fmt"

func main() {
  message := "lYnn 是 18"
	fmt.Println(strings.ToLower(message))
	fmt.Println(strings.ToUpper(message))
}

字符串重复多次

package main

import "fmt"

func main() {
  message := "lynn is 18; "
  fmt.Println(strings.Repeat(message, 2)) // 结果:lynn is 18; lynn is 18;
}

去除字符串的指定字符

strings.Trim()去除两头所有指定的字符

package main 

import "fmt"

func main() {
  message := "lynn is 18 yyy"
	fmt.Println(strings.Trim(message, "ly")) // 结果是:nn is 18
}

strings.TrimSpace()去除字符串两头的空格

package main 

import "fmt"

func main() {
  message := " lynn is 18 "
	fmt.Println(strings.TrimSpace(message, "ly")) 
}

strings.TrimLeft()去除左边的指定字符

strings.TrimRight()去除右边的指定字符

package main 

import "fmt"

func main() {
  message := "lynn is 18"
	fmt.Println(strings.TrimLeft(message, "ly")) 
  fmt.Println(strings.TrimRight(message, "ly")) 
}
  • 字符

组成字符串的元素,我们称之为字符,用单引号包裹起来。也就是单字符能用单引号

  • 修改字符串中的字符

byte类型和rune类型:

​ byte也就是unit8,代表ASCII码的一个字符

​ rune代表一个UTF-8的一个字符

字符串是不可修改的,要想修改字符串,必须先把字符串转化为[]byte类型或者[]rune类型,改完之后再改为string类型

字符串只有数字字母时

package main

import "fmt"

func main() {
  message := `lynk is 18` // 字符串只有字母和数字
	a := []byte(message)  // 只有字母和数字时转化为[]byte类型
	a[3] = 'n'  // 单引号,是一个字符
	message = string(a)
	fmt.Println(fmt.Sprintf( message))
}

字符串包好中文等字符时

package main

import "fmt"

func main() {
  	message := `lyn胖 is 18` // 字符串包含中文
	a := []rune(message) // 不能用[]byte,只能用[]rune
	a[3] = 'n'
	message = string(a)
	fmt.Println(fmt.Sprintf( message))
}
posted @ 2021-03-10 10:03  tianzhh_lynn  阅读(16)  评论(0编辑  收藏  举报