1.字符串分割,如果对""空字符串分割会怎么样
func main() {
str := ""
if str == ""{
fmt.Println("我的长度为0")
}
fmt.Println(len(str)) //0
sList := strings.Split(str, ",")
fmt.Println(sList)
if sList == nil {
fmt.Println("分割空字符串后列表为空")
} else {
fmt.Println(fmt.Sprintf("分割空字符串后列表不为空,列表长度为:%d", len(sList)))
for index, value := range sList{
fmt.Println("index:",index, "value:", value)
}
}
}
结果:
我的长度为0
0
[]
分割空字符串后列表不为空,列表长度为:1
index: 0 value:
从个结果来看分割""后列表的长度并不是为0,而是为1,因此在分割前可以先判断len(str)==0
str = strings.TrimSpace(str)//是去除字符串两端空格
2.字符串转int64常见问题:
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
str := " "
i , err := strconv.ParseInt(str, 10, 64)
fmt.Println(i) // 0
fmt.Println(err) //strconv.ParseInt: parsing " ": invalid syntax
str2 := " 342 " // 两边有空格错误是一样的,strconv.ParseInt: parsing " 342 ": invalid syntax
//因此建议先去除两边空格
str2 = strings.TrimSpace(str2)
i2 , err := strconv.ParseInt(str2, 10, 64)
fmt.Println(i2) // 342
fmt.Println(err) //<nil>
str3 := "3.56"
i3 , err := strconv.ParseInt(str3, 10, 64)
fmt.Println(i3)//0
fmt.Println(err) //strconv.ParseInt: parsing "3.56": invalid syntax
str4 := ", 4623"
sList := strings.Split(str4, ",") // 会被分割为【"",""】即[ 4623]
fmt.Println(sList)
fmt.Println("--------------")//0
for _, s := range sList{
//防止分割后的存在空格,例如", 4623"分割后存在空格
s = strings.TrimSpace(s)
i4 , err := strconv.ParseInt(s, 10, 64)
fmt.Println(i4)//0
fmt.Println(err) //strconv.ParseInt: parsing "3.56": invalid syntax
}
}
结果:
0
strconv.ParseInt: parsing " ": invalid syntax
342
<nil>
0
strconv.ParseInt: parsing "3.56": invalid syntax
[ 4623]
--------------
0
strconv.ParseInt: parsing "": invalid syntax
4623
<nil>
3.字符串与整数拼接
func main() {
s1 := "hello"
s2 := 2134
sprintf := fmt.Sprintf("%s,%d", s1, s2)
fmt.Println(sprintf)
}
结果:
hello,2134
3. 切片list操作
func main() {
l := []int{1}
l = nil
//l为nil时,可以使用len()进行判断,长度为0
fmt.Println(len(l))
//l为nil时,是可以正常for循环的
for _, value := range l{
fmt.Println(value)
}
//l为nil时可以append操作
l = append(l, 12)
fmt.Println(l)
}
结果:
0
[12]