• Go String


    String

    概念

    1. 字符串是一个 字节的切片。可以理解为一些字节的集合,按照字符的形式来展示
    2. 也可理解为一个字符的序列,序列的意思是每个字符都有固定的位置(下标,索引,index:从0开始,到长度减1)
    3. 画外音:字符串本质上就是一个字节Slice,字符串中的每个字符在字节slice中都有顺序和位置
    4. len(string):不是指字符的个数,而是指字节的个数。英文字母占单字节,中文字符一般占3个字节
    5. Go中的字符串是Unicode兼容的,并且是UTF-8编码的

    语法

    1. 用“”括起来
    2. 用``括起来

    理解

    1. 因为Go中所有的字符都有对应的编码值,这些编码值是用UTF-8编码的unicode编码值

    2. 操作字符实际就是操作编码值

      a='h'
      a=104
      //转换成字符输出都是'h',
      

    长度

    1. len(string):不是指字符的个数,而是指字节的个数。英文字母占单字节,中文字符一般占3个字节

    2. 获取某个字节

      s1 := "hello中国" //这是字符串对应着后台的字节slice
      //获取第一个字节,也就是获取后台字节slice的第一个字节
      s1[0]
      

    遍历字符串

    str1 := "helloworld"
    for i := 0 ;i<len(str1);i++{ //如果有中文字符会出现乱码
        fmt.Printf("%c	",str1[i])
    }
    
    str2 := "helloworld中国"
    for i,v := range str2{
        fmt.Printf("%d %c
    ",i,v)
    }
    

    字符串是字节的集合

    //字节切片->字符串
    slice1 := []byte{65,66,67,68,69}
    str3 := string(slice1)
    fmt.Println(str3) //ABCDE
    
    //字符串->字节切片
    str4 := "abcde"
    slice2 := []byte(str4)
    fmt.Println(slice2) //[97 98 99 100 101]
    

    字符串不能修改

    str4[0]='f' //报错 cannot assign to str4[0]
    //不能通过修改切片的方式修改字符串
    

    strings包

    1. 在go中,string被定义为基本数据类型
    2. strings包主要用来对采用utf-8编码的字符串实现一个操作
    //返回的所有位置,都是byte的下标位置
    
    func Contains(s, substr string) bool
    //判断字符串s是否包含子串substr。
    
    func ContainsAny(s, chars string) bool
    //字符串chars中的只要有一个字符包含在字符串s中,就返回true
    
    func Count(s, sep string) int
    //统计字符串s中子串sep出现的次数
    
    func HasSuffix(s, suffix string) bool
    //判断s是否有后缀字符串suffix。
    
    func HasPrefix(s, prefix string) bool
    //判断s是否有前缀字符串prefix。
    
    func Index(s, sep string) int
    //字符c在s中第一次出现的位置,不存在则返回-1。
    
    func IndexAny(s, chars string) int
    //字符串s中,第一个出现在chars中的位置,如果不存在或者chars为空字符串则返回-1。
    
    func IndexByte(s string, c byte) int
    //字符c在s中第一次出现的位置,不存在则返回-1。
    
    func LastIndex(s, sep string) int
    //子串sep在字符串s中最后一次出现的位置,不存在则返回-1。
    
    func Join(a []string, sep string) string
    //将一系列字符串连接为一个字符串,之间用sep来分隔
    
    func Split(s, sep string) []string
    //用去掉s中出现的sep的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。
    
    func Repeat(s string, count int) string
    //返回count个s串联的字符串。
    
    func Replace(s, old, new string, n int) string
    //返回将s中前n个不重叠old子串都替换为new的新字符串,如果n<0会替换所有old子串。
    
    func ToUpper(s string) string
    //返回将所有字母都转为对应的大写版本的拷贝。
    
    func ToLower(s string) string
    //返回将所有字母都转为对应的小写版本的拷贝。
    
    //截取字串 等同于slice操作 string[start:end]
    str6 := "hello中国"
    fmt.Println(str6[5:]) //中国
    

    stringconv包

    func Atoi(s string) (i int, err error)
    //字符串->十进制数值
    //Atoi是ParseInt(s, 10, 0)的简写。
    
    func Itoa(i int) string
    //十进制数值->字符串
    //Itoa是FormatInt(i, 10) 的简写。
    
    func ParseInt(s string, base int, bitSize int) (i int64, err error)
    //字符串转数值
    //base指定进制(2到36)bitSize
    //bitSize 指定结果必须能无溢出赋值的整数类型,0、8、16、32、64 分别代表 int、int8、int16、int32、int64
    
    func FormatInt(i int64, base int) string
    //返回i的base进制的字符串表示
    
  • 相关阅读:
    Operator开发实例
    Go构建HTTP服务
    Go依赖包的管理
    Go并发编程机制
    Go语言的基础数据类型
    k8s的APIServer流程介绍
    promise、resolve、reject、拦截响应
    AngularJS中service,factory,provider的区别
    scope
    sass入门
  • 原文地址:https://www.cnblogs.com/henryno12/p/12463859.html
Copyright © 2020-2023  润新知