跟我一起学习GO语言003
接上一节继续学习Go基本语法与使用-字符串应用
通过Go语言内建函数获取切片、字符串、通道等长度。
例如-01:
temp := "Hao are you"
fmt.Println(len(temp))
temp2 := "你好吗"
fmt.Println(len(temp2))
输出来的结果呢?
11,9
//采用UTF-8计算字符个数
fmt.Println(utf8.RuneCountInString(temp))
fmt.Println(utf8.RuneCountInString(temp2))
输出来的结果呢?
11,3
但是从输出的结果可能就有疑问了,为什么三个中文字是长度是9呢?因为Go语言的字符串都是以UTF-8格式保存的,每个中文字占用3个字节。如果我们使用UTF-8包提供的RuneCountInString函数就可以满足我们习惯的字符来计算。
常常我们会使用遍历一个字符串获取某个字符所在位置,我们看看怎么操作呢?
例如-02:
teststr:= "怎么遍历字符呢?abc"
fori := 0; i < len(teststr); i++ {
fmt.Printf("%c",teststr[i])
}
如果这样直接输出就有问题了,汉字就显示为乱码了,英文字母没有问题,汉字我们就需要使用Unicode。
//按Unicode字符遍历字符串
for_, s := range teststr {
fmt.Printf("Unicode:%c \n", s)
}
//获取字符串中某个字符位置正向搜索
strindex:= strings.Index(teststr, "遍历")
fmt.Println(strindex)
//获取字符串中某个字符位置反向搜索
strlastindex:= strings.LastIndex(teststr, "遍历")
fmt.Println(strlastindex)
我们接着看怎么修改字符串呢?
//修改字符串
tempstring:= "Hao do you do"
tempstringBytes:= []byte(tempstring)
fori := 7; i <= 9; i++ {
tempstringBytes[i]= 'f'
}
fmt.Printf(string(tempstringBytes))
Go语言的字符串无法直接修改每一个字符元素,只能通过重新构造新的字符串并赋值给原来的字符串变量实现。
//连接字符串--简单的采用"+"直接就可以连接
fmt.Printf(temp + tempstring)
//声明字节缓冲--高效方式
var stringBuilder bytes.Buffer
//把字符串写入缓冲
stringBuilder.WriteString(temp)
stringBuilder.WriteString(tempstring)
//将缓冲以字符串形式输出
fmt.Printf(stringBuilder.String())
Go语言中格式化函数与需要注意的写法,格式化动词“%”
例如-03
//Go语言格式化
letgo := 2
//参数格式化
title := fmt.Sprintf("我们开始学习Go语言应从 %d 个方面入手\n", letgo)
fmt.Printf(title)
//按值本身格式输出
pai := 3.1415926
fmt.Printf("%v", pai)
常量声明方式:关键字const
//常量声明
const pi = 3.1415926
//多个常量声明方式
const(
ff=11
dd=22
)
fmt.Println(pi)
代码段:
temp := "Hao areyou"
fmt.Println(len(temp))
temp2 := "你好吗"
fmt.Println(len(temp2))
//采用UTF-8计算字符个数
fmt.Println(utf8.RuneCountInString(temp))
fmt.Println(utf8.RuneCountInString(temp2))
teststr := "怎么遍历字符呢?abc"
fori := 0; i < len(teststr); i++ {
fmt.Printf("%c", teststr[i])
fmt.Printf("Unicode:%c \n", teststr[i])
}
//按Unicode字符遍历字符串
for_, s := range teststr {
fmt.Printf("Unicode:%c \n", s)
}
//获取字符串中某个字符位置正向搜索
strindex := strings.Index(teststr, "遍历")
fmt.Println(strindex)
//获取字符串中某个字符位置反向搜索
strlastindex := strings.LastIndex(teststr, "遍历")
fmt.Println(strlastindex)
//修改字符串
tempstring := "Hao do youdo"
tempstringBytes := []byte(tempstring)
fori := 7; i <= 9; i++ {
tempstringBytes[i]= 'f'
}
fmt.Printf(string(tempstringBytes))
//连接字符串--简单的采用"+"直接就可以连接
fmt.Printf(temp +tempstring)
//声明字节缓冲--高效方式
varstringBuilder bytes.Buffer
//把字符串写入缓冲
stringBuilder.WriteString(temp)
stringBuilder.WriteString(tempstring)
//将缓冲以字符串形式输出
fmt.Printf(stringBuilder.String())
//Go语言格式化
letgo := 2
//参数格式化\n换行
title := fmt.Sprintf("我们开始学习Go语言应从 %d 个方面入手\n", letgo)
fmt.Printf(title)
//按值本身格式输出
pai := 3.1415926
fmt.Printf("%v \n", pai)
//常量声明
constpi = 3.1415926
//多个常量声明方式
const (
ff = 11
dd = 22
)
fmt.Println(pi)
请开始你的表演,践行,践行,再践行。未完待续。。。