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
)
定义多常量时后一
