【Go语言学习笔记】——Go语言常用内置包

字符串处理概述

字符串的遍历

	s := "我hello world"
	fmt.Println("字节长度:",len(s)) // 字节长度: 14

	// golang中的unicode/utf8包提供了用utf-8获取长度的方法
	fmt.Println("RuneCountInString: ",utf8.RuneCountInString(s))
	// 通过rune类型处理unicode字符
	fmt.Println("rune: ",len([]rune(s)))

	fmt.Println()
	fmt.Println("---------------")
	for i, ch := range s {
		fmt.Printf("%d:%c ",i,ch)
	}
	fmt.Println()
	fmt.Println("---------------")
	for i, ch := range []byte(s) {
		fmt.Printf("%d:%x ",i,ch)
	}
	fmt.Println()
	fmt.Println("---------------")
	for i, ch := range []rune(s) {
		fmt.Printf("%d:%c ",i,ch)
	}


字节长度: 14
RuneCountInString:  12
rune:  12

---------------
0:3:h 4:e 5:l 6:l 7:o 8:  9:w 10:o 11:r 12:l 13:d 
---------------
0:e6 1:88 2:91 3:68 4:65 5:6c 6:6c 7:6f 8:20 9:77 10:6f 11:72 12:6c 13:64 
---------------
0:1:h 2:e 3:l 4:l 5:o 6:  7:w 8:o 9:r 10:l 11:d 

如果字符串涉及中文,遍历字符推荐使用rune,因为一个byte存不下一个汉语文字的unicode值。
rune 是Go语言中一种特殊的数据类型,是int32的别名,几乎所有方面等同于int32,用于区分字符值和整数值。
byte等同于int8 常用来处理ascii字符
rune等同于int32 常用来处理unicode或utf8字符

strings包的字符串处理函数

判断字符串包含
	fmt.Println("判断是否包含子串: ",strings.Contains("seafood","foo"))
	fmt.Println("判断字符串是否包含另一字符串中的任一字符: ",strings.ContainsAny("seafood","fzzz"))
	fmt.Println("判断字符串是否包含unicode码值: ",strings.ContainsRune("你好",'你'))
	fmt.Println("返回字符串包含另一字符串的个数: ",strings.Count("你好","你"))
	fmt.Println("返回字符串中的任一unicode码值首次出现的位置: ",strings.IndexAny("教育基地A","用地"))
	fmt.Println("返回字符串中的任一unicode码值首次出现的位置: ",strings.IndexAny("教育基地A","教用地"))
	fmt.Println("返回字符串中的任一unicode码值首次出现的位置: ",strings.IndexAny("教育基地A","教用地"))
	fmt.Println("返判断字符串是否包含unicode码: ",strings.IndexRune("教育基地A",'基'))
	f:= func(c rune) bool{
		return unicode.Is(unicode.Han,c)
	}
	fmt.Println("返回字符串中满足函数f(r)==true字符首次出现的位置: ",strings.IndexFunc("RFG教育基地A",f))
	fmt.Println("返回字符串中满足函数f(r)==true字符最后出现的位置: ",strings.LastIndexFunc("RFG教育基地A",f))


	//判断是否包含子串:  true
	//判断字符串是否包含另一字符串中的任一字符:  true
	//判断字符串是否包含unicode码值:  true
	//返回字符串包含另一字符串的个数:  1
	//返回字符串中的任一unicode码值首次出现的位置:  9
	//返回字符串中的任一unicode码值首次出现的位置:  0
	//返回字符串中的任一unicode码值首次出现的位置:  0
	//返判断字符串是否包含unicode码:  6
	//返回字符串中满足函数f(r)==true字符首次出现的位置:  3
	//返回字符串中满足函数f(r)==true字符最后出现的位置:  12
字符串分割
	fmt.Println("将字符串以空白字符分割,并返回一个切片: ", strings.Fields(" abc 123    ABC"))
	f:= func(c rune) bool {
		return !unicode.IsLetter(c) && !unicode.IsNumber(c)
	}
	fmt.Println("将字符串以满足f(r)==true的字符分割返回切片: ", strings.FieldsFunc("abc@123*ABC&xyz%XYZ",f))
	fmt.Println("将字符串以sep作为分隔符分割,分割后字符最后去掉sep: ", strings.Split("a,b,c",","))
	fmt.Println("将字符串以sep作为分隔符分割,分割后字符最后附上sep: ", strings.SplitAfter("a,b,c",","))
	fmt.Println("将字符串以sep作为分隔符分割,分割后字符最后附上sep,n决定返回的切片数: ", strings.SplitAfterN("a,b,c",",",2))

	//将字符串以空白字符分割,并返回一个切片:  [abc 123 ABC]
	//将字符串以满足f(r)==true的字符分割返回切片:  [abc 123 ABC xyz XYZ]
	//将字符串以sep作为分隔符分割,分割后字符最后去掉sep:  [a b c]
	//将字符串以sep作为分隔符分割,分割后字符最后附上sep:  [a, b, c]
	//将字符串以sep作为分隔符分割,分割后字符最后附上sep,n决定返回的切片数:  [a, b,c]
大小写转换
	fmt.Println("将字符串s每个单词首字符大写返回: ",strings.Title("her royal highness"))
	fmt.Println("将字符串s转换成大写返回: ",strings.ToTitle("her royal highness"))
	fmt.Println("将字符串s转换成小写返回: ",strings.ToLower("HER ROYAL HIGHNESS"))
	fmt.Println("将字符串s转换成大写返回: ",strings.ToUpper("her royal highness"))
	//将字符串s每个单词首字符大写返回:  Her Royal Highness
	//将字符串s转换成大写返回:  HER ROYAL HIGHNESS
	//将字符串s转换成小写返回:  her royal highness
	//将字符串s转换成大写返回:  HER ROYAL HIGHNESS
修剪字符串
	//fmt.Println("将字符串首尾包含在custset中的任一字符去掉返回: ",strings.Trim("a1111a","a"))
	//fmt.Println("将字符串左边包含在custset中的任一字符去掉返回: ",strings.TrimLeft("a1111a","a"))
	//fmt.Println("将字符串中前缀字符串prefix去掉: ",strings.TrimPrefix("hello world","hello"))
	//fmt.Println("将字符串中后缀字符串suffix去掉: ",strings.TrimSuffix("hello world","world"))
	//将字符串首尾包含在custset中的任一字符去掉返回:  1111
	//将字符串左边包含在custset中的任一字符去掉返回:  1111a
	//将字符串中前缀字符串prefix去掉:   world
	//将字符串中后缀字符串suffix去掉:  hello
比较字符串
	fmt.Println("按字典顺序比较a和b字符串大小: ",strings.Compare("abc","bcd"))
	fmt.Println("按字典顺序比较a和b字符串大小: ",strings.Compare("bcd","abc"))
	fmt.Println("按字典顺序比较a和b字符串大小: ",strings.Compare("abc","abc"))
	fmt.Println("按字典顺序比较a和b字符串大小: ","abc"<"bcd")
	fmt.Println("忽略大小写比较字符串大小: ",strings.EqualFold("abc","ABC"))
	fmt.Println("将字符串s重复count次返回: ",strings.Repeat("*",10))
	fmt.Println("字符串替换: ",strings.Replace("王老大 王老二","王","张",1))
	fmt.Println("字符串替换: ",strings.Replace("王老大 王老二","王","张",2))
	l := []string{"1","2","3"}
	fmt.Println(strings.Join(l,"%"))

	//按字典顺序比较a和b字符串大小:  -1
	//按字典顺序比较a和b字符串大小:  1
	//按字典顺序比较a和b字符串大小:  0
	//按字典顺序比较a和b字符串大小:  true
	//忽略大小写比较字符串大小:  true
	//将字符串s重复count次返回:  **********
	//字符串替换:  张老大 王老二
	//字符串替换:  张老大 张老二
	//1%2%3

strconv包的常用函数

Parse 类函数

Parse类函数主要功能是将字符串转换为其他类型

	num, _ := strconv.ParseInt("01100001", 2, 64)
	fmt.Printf("%T , %v \n", num, num)
	num1, _ := strconv.ParseInt("-01100001", 10, 64)
	fmt.Printf("%T , %v \n", num1, num1)
	num2, _ := strconv.ParseInt("4e00", 10, 64)
	fmt.Printf("%T , %v \n", num2, num2)

	num3, _ := strconv.ParseFloat("3.1415926", 64)
	fmt.Printf("%T , %v \n", num3, num3)

	num4, _ := strconv.ParseBool("true")
	fmt.Printf("%T , %v \n", num4, num4)
	//int64 , 97
	//int64 , -1100001
	//int64 , 0
	//float64 , 3.1415926
	//bool , true
Format类函数

Format类函数主要是将其他类型格式化成字符串

	s := strconv.Itoa(199)
	fmt.Printf("%T,%v,长度:%d \n",s,s,len(s))
	// 返回给定基数的i的字符串表示
	s1 := strconv.FormatInt(-19968, 16)
	fmt.Printf("%T,%v,长度:%d \n",s1,s1,len(s1))
	s2 := strconv.FormatInt(-8, 2)
	fmt.Printf("%T,%v,长度:%d \n",s2,s2,len(s2))

	s3 := strconv.FormatUint(19968, 16)
	fmt.Printf("%T,%v,长度:%d \n",s3,s3,len(s3))
	s4 := strconv.FormatUint(8, 2)
	fmt.Printf("%T,%v,长度:%d \n",s4,s4,len(s4))

	//string,199,长度:3
	//string,-4e00,长度:5
	//string,-1000,长度:5
	//string,4e00,长度:4
	//string,1000,长度:4

time包

在这里插入图片描述
在这里插入图片描述

math包

在这里插入图片描述

随机数

在这里插入图片描述

键盘输入

	username := ""
	age := 0
	fmt.Scanln(&username,&age)
	fmt.Println("账号信息为: " ,username,age)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值