Go语言学习笔记(四)中是什么?

摘要:一、字符串 1、字符串截取 + 可以使用 len(字符串变量) 获取字符串的字节长度,其中英文占1个字节长度,中文占用3个字节长度 + 可以使用 变量名[n] 获取到字符串第n+1个字节
一、字符串 1、字符串截取 可以使用len(字符串变量)获取字符串的字节长度,其中英文占1个字节长度,中文占用3个字节长度 可以使用变量名[n]获取到字符串第n+1个字节,返回这个字节对应的Unicode码值(uint8类型),注意n的取值范围是[0,长度) package main import "fmt" func main() { s := "smallming张" a := s[0] fmt.Println(a) // 115 fmt.Printf("%T\n", a) // unit8 b := fmt.Sprintf("%c", a) // string fmt.Printf("%T\n", b) // s fmt.Println(b) } 可以使用变量名[n:m]取出大于等于n小于m的字符序列 n和m都可以省略,省略是认为n为0,m为长度减一 因为中文占用三个字节,如果没有把中文完整取出,会出现乱码 func main() { s := "smallming张" fmt.Println(len(s)) //12 fmt.Println(s[1:4]) //mal fmt.Println(s[:4]) //smal fmt.Println(s[5:11]) //ming� fmt.Println(s[5:12]) //ming张 } 可以通过把字符串转换为切片获取长度,并获取里面内容,也可以直接使用for循环结合range获取 func main() { s := "smallming张" s1 := []rune(s) fmt.Println(len(s1)) fmt.Println(s1[9]) fmt.Printf("%c", s1[9]) for i, n := range s { fmt.Println(i, n) } } 2、常用函数 在strings包中提供了字符串常用的函数 常用函数整理如下: func main() { s := "smallming" //第一次出现的索引 fmt.Println(strings.Index(s, "l")) //最后一次出现的索引 fmt.Println(strings.LastIndex(s, "l")) //是否含有前缀 fmt.Println(strings.HasPrefix(s, "small")) //是否含有后缀 fmt.Println(strings.HasSuffix(s, "ming")) //是否包含 fmt.Println(strings.Contains(s, "mi")) //转换为小写 fmt.Println(strings.ToLower(s)) //转换为大写 fmt.Println(strings.ToUpper(s)) //替换字符,把字符串中前n个old子字符串替换成new字符串,如果n小于0表示全部替换 fmt.Println(strings.Replace(s, "m", "k", -1)) } 二、常量 1、概述 常量是一个固定值,在编译期间就确定结果,声明时必须赋值且结果不可以改变 因为常量在编译期间就确定,可以防止程序运行过程中意外修改 常量关键字const 常量定义后可以不使用 Go语言中常量定义没有明确语法要求,驼峰即可 很多内容都可以定义成常量 人名 圆周率 电话号 2、常量定义 定义常量时如果不是必须指定特定类型,可以省略类型,使用默认类型,且数值类型常量(不定义类型)可以直接进行运算 常量的值可以是表达式,但是不允许出现变量 func main() { const a string = "smallming" const b = 123 const c = 3*2 + 5 const d = 1.5 fmt.Printf("%T %T\n", c, d) //int float64 fmt.Println(c + d) //12.5 //下面方式是错误的 i := 3 const e = i*3 + 2 } 当定义多个常量时官方推荐的方式 // 定义常量组 const ( a = 1 b = 2 c = true ) 定义多常量时后一
阅读全文