go常用包学习笔记

本文介绍了Go语言中常用的`strings`、`strconv`和`time`包的使用方法,包括字符串操作、数字转换、时间处理等。通过示例展示了如何进行字符串查找、拼接、格式化以及时间的格式化和时区转换。同时,文章还提及了随机数生成以及时间戳的获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

go常用包学习笔记

包可以理解为文件夹,存储代码的地方
一般都存在src目录下

多种导包方式

一:默认方式

二:. “xx/xx” 调用的时候不需要写包名,可以直接调用包下的函数,结构体等。

三:R “xx/xx” 别名方式

四:_ “xx/xx” 只执行包中的init()

init函数

通常用来变量初始化,检查/修复程序的状态,注册,运行一次程序
先行与main函数执行。
如果一个包中有多个init函数,按照文件的顺序执行。

strings包

func main() {
	var (
		a string
	)
	a = "hellos,yuanshun"
	//Contains判断a中是否包含y
	fmt.Println(strings.Contains(a, "y"))  //true
	fmt.Println(strings.Contains(a, "ya")) //false
	//ContainsAny 判断a中是否包含a,b,有一个就返回true
	fmt.Println(strings.ContainsAny(a, "ab")) //true
	//Count统计l在a中出现了几次
	fmt.Println(strings.Count(a, "l")) //2
	//hasPrefix判断是不是以hello开头
	fmt.Println(strings.HasPrefix(a, "hello")) //true
	//hasSuffix判断是不是以shu结尾
	fmt.Println(strings.HasSuffix(a, "shu")) //false
	//Index判断s第一次出现的位置
	fmt.Println(strings.Index(a, "s")) //5
	//IndexAny判断y,h第一次出现的位置,  返回的竟然是0
	fmt.Println(strings.IndexAny(a, "yh")) //0
	//LastIndex,查找h最后一次出现的位置
	fmt.Println(strings.LastIndex(a, "h")) //12
	//join拼接 (只能是string类型的切片,数组和int类型的都不行)
	b := []string{"1", "2", "3", "4", "5"}
	b1 := strings.Join(b, "x")
	fmt.Println(b1) //1x2x3x4x5
	//split将字符串按照指定字符拆分自己,变成切片类型了
	b2 := strings.Split(a, ",")
	fmt.Println(b2) //[hellos yuanshun]
	//Repeat
	b3 := strings.Repeat("a", 5)
	fmt.Println(b3) //aaaaa

	//Replace 4个参数,源端,要改的,改成什么样,改几次,-1代表全部
	b4 := strings.Replace(a, "a", "*", -1)
	fmt.Println(b4) //hellos,yu*nshun
	//ToLower全部变小写
	fmt.Println(strings.ToLower(a)) //hellos,yuanshun
	//ToUpper全部变大写
	fmt.Println(strings.ToUpper(a)) //HELLOS,YUANSHUN
	//str截取
	b5 := a[0:5]
	fmt.Println(b5) //hello
}

strconv包

func main() {
	str := "true"
	//将字符串true,变成bool类型true,返回两个参数  1也可以
	str1, _ := strconv.ParseBool(str)
	fmt.Println(str1)
	//将bool类型的true,变为字符串true
	str2 := strconv.FormatBool(str1)
	fmt.Println(str2)

	i := "10"
	//将字符串2进制的10以64位输出为int类型
	i1, _ := strconv.ParseInt(i, 2, 64)
	fmt.Println(i1)
	//将10进制的数,转为字符串类型
	i2 := strconv.FormatInt(i1, 10)
	fmt.Println(i2)

	//atoi 字符串转数字(返回2个参数)
	fmt.Println(strconv.Atoi("20")) //20 nil
	//itoa数字转字符串
	fmt.Println(strconv.Itoa(30))
}

时间包

将字符串转为时间类型,前后必须格式一致。前后格式需要一样 还搞的要写两个参数,感觉传进去value参数就够了。

func main() {

	time1 := time.Now()
	//将time1按照自己想要的格式化输出。注意:这个612345是固定的。
	fmt.Println(time1.Format("2006/01/02 03:04:05 PM"))
	fmt.Println(time1.Format("2006/01/02 15:04:05 "))

	time2, _ := time.LoadLocation("Asia/Shanghai") //取上海时区
	//前后格式必须一样,不然结果不对,感觉不够人性化
	//想把字符串"2022-11-02 05:16:52",变成年月日的时间类型,要分开操作
	//先变成时间,在转换格式。
	time3, _ := time.ParseInLocation("2006-01-02 15:04:05", "2022-11-02 05:16:52", time2)
	fmt.Println(time3)

	fmt.Println(time3.Format("2006年01月02日 03:04:05 PM"))
}
时间戳

现在到1970年1月1日 08点的毫秒数

func main() {
	//到1970年1月1日8点的毫秒
	time1 := time.Now().Unix()
	fmt.Printf("%T\n", time1) //int
	fmt.Println(time1)        //1667382419
	//真不知道这个0是干嘛的,写其他数字 也没啥变化
	time2 := time.Unix(time1, 0) //2022-11-02 17:59:32 +0800 CST
	fmt.Println(time2)
	time3 := time.Unix(time1, 9) //2022-11-02 18:00:41.000000009 +0800 CST
	fmt.Println(time3)

}

随机数

太low了,要写两个函数,因为rand.int()出来的数字,是根据rand.Seed()的值变化,如果种子一样,那么就永远一样。

func main() {
	rand.Seed(time.Now().Unix())
	r1 := rand.Int()
	//随机数在20-29之间
	r2 := rand.Intn(10) + 20
	fmt.Println(r1) //1680632613514789431
	fmt.Println(r2) //27

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tigeraowu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值