string
func StringDemo() {
str:= "hello"
fmt.Println(len(str))
str = "hello上"
fmt.Println(len(str))
for _,value := range str {
fmt.Printf("%q", value)
}
fmt.Println("---------------")
for i:= 0; i<len(str);i++ {
fmt.Printf("%c", str[i])
}
str2 := []rune(str)
for i:= 0; i<len(str2);i++ {
fmt.Printf("%c", str2[i])
}
byteData := []byte("hello")
fmt.Printf("\n String 转 byte : %v\n", byteData)
str = string([]byte{104,101,108, 108, 111})
fmt.Printf("\n byte 转 String : %s\n", str)
}
- 长度: len()
- 遍历:for _,value := range str {}
- 使用for循环无法遍历出汉字,所以需要使用[]rune 转换
str2 := []rune(str)
for i:= 0; i<len(str2);i++ {
fmt.Printf("%c", str2[i])
}
- string 转byte: byteData := []byte(“hello”)
- byte 转 String: str = string([]byte{104,101,108, 108, 111})
基本数据类型转string
func baseDataToString() {
var num1 int = 23
var num2 float64 = 23.23
var num3 bool = false
var mychar byte = 'a'
var str string
str = fmt.Sprintf("%d", num1)
fmt.Printf("str 的类型 %T, 和值 %q\n", str, str)
str = fmt.Sprintf("%f", num2)
fmt.Printf("str 的类型 %T, 和值 %q\n", str, str)
str = fmt.Sprintf("%t", num3)
fmt.Printf("str 的类型 %T, 和值 %q\n", str, str)
str = fmt.Sprintf("%c", mychar)
fmt.Printf("str 的类型 %T, 和值 %q\n", str, str)
str = strconv.FormatInt(int64(num1), 10)
fmt.Printf("str 的类型 %T, 和值 %q\n", str, str)
str = strconv.FormatFloat(num2, 'f', 8, 64)
fmt.Printf("str 的类型 %T, 和值 %q\n", str, str)
str = strconv.FormatBool(num3)
fmt.Printf("str 的类型 %T, 和值 %q\n", str, str)
str = fmt.Sprintf("%c", mychar)
fmt.Printf("str 的类型 %T, 和值 %q\n", str, str)
str = strconv.Itoa(num1)
fmt.Printf("str 的类型 %T, 和值 %q\n", str, str)
}
- 主要使用的是strconv 包和 fmt包下的fmt.Sprintf() 函数
- int64 转 string: strconv.FormatInt(int64(num1), 10)
- float 转 string:strconv.FormatFloat(num2, ‘f’, 8, 64) //保留8位小数,64表示这个小数是 float64
- bool 转 string: strconv.FormatBool(num3)
- int 转 string: strconv.Itoa(num1)
string 转基本数据类型
func stringToBaseData() {
num1, num2, num3 := "true", "12","23.23"
str,err := strconv.ParseBool(num1)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(str)
str1,err1 := strconv.ParseInt(num2, 10, 64 )
if err1 != nil {
fmt.Println(err1)
return
}
fmt.Println(str1)
str2,err2 := strconv.ParseFloat(num3, 64)
if err2 != nil {
fmt.Println(err2)
return
}
fmt.Println(str2)
}
- 主要使用strconv包下的函数
- string 转bool : strconv.ParseBool(num1)
- string 转int:strconv.ParseInt(num2, 10, 64 ) 10进制 int64
- string 转float:strconv.ParseFloat(num3, 64) 转为float64
string的其他内置函数
func stringOtherFunction() {
boo := strings.Contains("abc123","abc")
fmt.Println(boo)
iValue := strings.Count("abc123abc","abc")
fmt.Println(iValue)
boo = strings.EqualFold("abc","Abc")
fmt.Println(boo)
fmt.Println("abc" == "Abc")
iValue = strings.Index("123abc123","abc")
fmt.Println(iValue)
iValue = strings.LastIndex("abc123abc123","abc")
fmt.Println(iValue)
str := strings.Replace("abc123abc123","abc","ert",1)
fmt.Println(str)
str = strings.ToUpper("abc")
fmt.Println(str)
str = strings.ToLower("AbcT")
fmt.Println(str)
strs := strings.Split("abc,123,bcd,234",",")
fmt.Println("打印字符串数组。。。。")
for _,str := range strs {
fmt.Println(str)
}
str = strings.TrimSpace(" str str ")
fmt.Println(str)
str = strings.Trim("!hello world!", "!")
fmt.Println(str)
str = strings.TrimLeft("!hello world!", "!")
fmt.Println(str)
str = strings.TrimRight("!hello world!", "!")
fmt.Println(str)
boo = strings.HasPrefix("abc123","123")
fmt.Println(boo)
boo = strings.HasSuffix("abc123","123")
fmt.Println(boo)
}