包含字符串的常用操作,使用需引入strings包
import (
"strings"
)
子字符串包含判断
println(strings.Contains("Golang编程语言", "lang编程"))//true
println(strings.Contains("Golang编程语言", "Lang编程"))//false
字符串比较
println(strings.Compare("aa", "aa"))//0: aa == bb
println(strings.Compare("aa", "ab"))//-1: aa < bb
println(strings.Compare("bb", "az"))//1: bb > az
println(strings.Compare("中国", "汉字"))//-1
大小写转换
println(strings.ToLower("ABCD汉字"))//abcd汉字
println(strings.ToUpper("abcd汉字"))//ABCD汉字
包含前缀后缀
println(strings.HasPrefix("pre_txt", "pre"))// true
println(strings.HasSuffix("txt_suf", "suf"))// true
字符串分割
strSlice := strings.Split("go|java|html|C++", "|")
fmt.Print(strSlice)//[go java html C++]
字符串拼接
strSlice := []string{"go", "java", "html", "C++"}
println(strings.Join(strSlice, "|"))//go|java|html|C++
strconv包
包含了字符串和常用数值类型的转换,使用需引入strconv包
import (
"strconv"
)
bool 类型与string 类型转换
b, err := strconv.ParseBool("true")
if err == nil {
fmt.Println(b)
}
s := strconv.FormatBool(true)
fmt.Println(s)
跟进strconv.ParseBool源码,可以看到可以转换为bool类型的字符串包含"1", “t”, “T”, “true”, “TRUE”, “True"与"0”, “f”, “F”, “false”, “FALSE”, “False”。
func ParseBool(str string) (bool, error) {
switch str {
case "1", "t", "T", "true", "TRUE", "True":
return true, nil
case "0", "f", "F", "false", "FALSE", "False":
return false, nil
}
return false, syntaxError("ParseBool", str)
}
number数字与string的转换
strconv.Itoa(123)//整数转换为字符串
strconv.Atoi("123")//字符串转换为整数
strconv.ParseFloat("3.1415", 64)// 转换为 float64
fmt.Println(strconv.FormatFloat(3.1415, 'f', 6, 32))// 打印 3.141500
time包
currentTime := time.Now()//获取当前时间
fmt.Println(currentTime)//2022-09-10 15:46:24.6267011 +0800 CST m=+0.004978801
fmt.Println(currentTime.Year())//2022
fmt.Println(currentTime.Month())//September
fmt.Println(currentTime.Date())//2022 September 10
fmt.Println(currentTime.Day())//10
fmt.Println(currentTime.Hour())//15
fmt.Println(currentTime.Minute())//46
fmt.Println(currentTime.Second())//24
sort排序包
package main
import (
"fmt"
"sort"
)
func main() {
sliceint := []int{7, 5, 8, -2, 9, 1, 4}
sort.Ints(sliceint)
fmt.Println(sliceint)
sort.Sort(sort.Reverse(sort.IntSlice(sliceint)))
fmt.Println(sliceint)
sliceStr := []string{"python", "java", "c++", "c", "golang", "PHP"}
sort.Strings(sliceStr)
fmt.Println(sliceStr)
sort.Sort(sort.Reverse(sort.StringSlice(sliceStr)))
fmt.Println(sliceStr)
}
io/ioutil 读写工具包
b, _ := ioutil.ReadFile("main.go")
fmt.Println(string(b))
ioutil.WriteFile("main.go", []byte(""), fs.ModeAppend)
bufio 缓冲io读写包
file, _ := os.Open("sort.go")
bufreader := bufio.NewReader(file)
line, _, _ := bufreader.ReadLine()
println(string(line))
os包
获取当前目录pwd
pwd, err := os.Getwd()
创建系统目录
os.MkdirAll("patn", os.ModeDir)
创建文件
os.Create("filename")
print、println打印函数
println("hello world")
len函数
计算 string、array、slice、map、channel的长度
println(len("abc汉字"))//9
arr := [3]int{1, 2, 3}
println(len(arr))//3
ss := make(map[string]string, 3)
println(len(ss)) // 0
cap函数
计算容器的最大容量 slice channel
c := make(chan int, 10)
println(cap(c))//10
arr := [3]int{1, 2, 3}
println(cap(arr))//3
//ss := make(map[string]string, 3,10) //编译错误
ss := make(map[string]string, 3)
//println(cap(ss))//编译错误
make函数
make用于初始化 slice、map、channel
ints := make([]int, 10, 20)
fmt.Println(ints) //[0 0 0 0 0 0 0 0 0 0]
maps := make(map[string]interface{}, 10)
fmt.Println(maps)
c := make(chan int, 10)
fmt.Println(c)
new函数
new 用于初始化值类型的零值并返回其指针
iptr := new(int)
fmt.Println(iptr)//地址
fmt.Println(*iptr)// 0
close函数
用于关闭channel
c := make(chan int, 10)
close(c)
copy函数
用于拷贝slice
srcSli := []string{"d"}
dstSli := []string{"abc"}
copy(dstSli, srcSli)
fmt.Println(srcSli)//[d]
fmt.Println(dstSli)//[d]
fmt.Println(i)//拷贝数量
append函数
用于向slice中追加数据
srcSli := []string{"d"}
dstSli := append(srcSli, "ooo")
fmt.Println(srcSli)//[d]
fmt.Println(dstSli)//[d ooo]
delete函数
用于删除map中指定key数据
studentScore := map[string]int{"Lily": 10, "Lucy": 15}
delete(studentScore, "Lily")
main函数与init函数
main函数和init函数一样都没有入参与返回值,不同的是main函数需要在package main包内,init函数可以定义在任何包内。