Go 常见使用问题记录

Posted liuhmmjj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go 常见使用问题记录相关的知识,希望对你有一定的参考价值。

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 := []int1
	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]

以上是关于Go 常见使用问题记录的主要内容,如果未能解决你的问题,请参考以下文章

Go 常见使用问题记录

GO并发编程方面的一些常见面试问题

go web by the one.一些常见知识记录

Go代码打通HTTPs

Golang 常见问题记录

Golang 常见问题记录