golang string多少字节
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang string多少字节相关的知识,希望对你有一定的参考价值。
参考技术A 一个字符(rune)四个字节,一个字符串str是len(str)*4个字节。 参考技术B golang里边 string的概念其实不是以前遇到/0结尾的概念了,他其实就是一块连续的内存,首地址+长度,上面那样赋值,如果p里边有/0,他不会做处理这个时候,如果再对这个string做其他处理就可能出问题了,比如strconv.Atoi转成int就有错误,解决办法就是需要自己写一个正规的转换函数。本回答被提问者采纳golang字符串常用函数
package utils
import "fmt"
import "strconv"
import "strings"
var str string = "学golang使我快乐!"
// 关于string的常用函数
// 1. len(str) 内建函数,返回字符串长度,按字节,1个汉字3字节
// 2. range []rune(str) 字符串遍历,处理中文问题
func F2() {
for _,value := range []rune(str) {
fmt.Printf("%c
",value)
}
}
// 3. string转整数 strconv.Atoi(str) 这个函数是 strconv.ParseInt(s string, base int, bitSize int) (i int64 err error)的简化版
func F3() {
num, _ := strconv.Atoi("666")
fmt.Printf("num type is %T,value is %v", num, num) // num type is int,value is 666
}
// 4. 整数转string strconv.Itoa(666) 是strconv.FormatInt(i int64, base int) string的简化版
// 5. string to []byte b := []byte(str)
func F5(){
b := []byte(str)
fmt.Printf("%T %v
", b, b) // type of b is []uint8
}
// 6. []byte to string s := string([]byte{77,88,99})
func F6(){
s := string([]byte{77,88,99})
fmt.Printf("%T %v
", s, s) // string MXc
}
// 7. 十进制数转2 8 16进制字符串 strconv.FormatInt(i int64, base int) string base->2,8,16
// 8. 判断字符串s是否包含子串substr strings.Contains(s, substr string) bool
// 9. 统计子串出现次数 strings.Count(s, sep string) int
func F9() {
s := "A man who helps you when you are in trouble and who leaves you when you are successful is a real friend."
fmt.Println(strings.Count(s,"you")) // 4
s = "lv"
fmt.Println(strings.Count(s,"")) // 3
}
// 10. 判断连个字符串是否相等 str1 == str2 区分大小写, 不区分大小写方式strings.EqualFold(s, t string) bool
// 11. 子串sep在字符串s中第一次/最后一次出现的位置,不存在则返回-1 Index(s, sep string) int/LastIndex(s, sep string) int
// 12. 将n个old子串替换为new字符串,n<0会替换所有old子串 strings.Replace(s, old, new string, n int) string
// 13. 大小写转换 strings.ToUpper /ToLower
// 14. 按sep拆分字符串,返回一个slice strings.Split(s, sep string) []string
// 15. 将字符串slice以sep为分隔符组合成一个字符串 strings.Join(a []string, sep string) string
// 16. Trim系列 Trim(s string, cutset string) string 去除左右两边指定字符串 TrimRight/TrimLeft
// TrimSpace(s string) string 去除左右两边空白
// TrimPrefix(s, prefix string) string /TrimSuffix(s, suffix string) string 去除前/后缀
// 17. 判断s是否有前缀/后缀字符串prefix HasPrefix(s, prefix string) bool / HasSuffix
以上是关于golang string多少字节的主要内容,如果未能解决你的问题,请参考以下文章