【golang学习总结】8 golang常用库函数

本文详细介绍了Go语言的基础语法,包括字符串操作、日期时间处理和内置函数的使用,如strconv转换、strings包的功能及time包的时间处理。此外,还深入探讨了Go的错误处理机制,包括defer、panic和recover的运用,以及自定义错误的创建。通过实例展示了如何在程序中优雅地处理错误,确保程序的稳定运行。
摘要由CSDN通过智能技术生成

本文介绍SpringBoot相关内容。和【跨考菌】一起加油吧~

在这里插入图片描述

如果你有收获,记得帮博主一键三连哦😊


1 字符串系统函数

1) 统计字符串的长度, 按字节 len(str)
在这里插入图片描述

2) 字符串遍历, 同时处理有中文的问题 r := []rune(str)
在这里插入图片描述
3) 字符串转整数: n, err := strconv.Atoi(“12”)
在这里插入图片描述
4) 整数转字符串 str = strconv.Itoa(12345)
在这里插入图片描述
5) 字符串 转 []byte: var bytes = []byte(“hello go”)
在这里插入图片描述

6) []byte 转 字符串: str = string([]byte{97, 98, 99})
在这里插入图片描述

  1. 10 进制转 2, 8, 16 进制: str = strconv.FormatInt(123, 2) // 2-> 8 , 16
    在这里插入图片描述

8) 查找子串是否在指定的字符串中: strings.Contains(“seafood”, “foo”) //true
在这里插入图片描述
9) 统计一个字符串有几个指定的子串 : strings.Count(“ceheese”, “e”) //4
在这里插入图片描述

10) 不区分大小写的字符串比较(==是区分字母大小写的): fmt.Println(strings.EqualFold(“abc”,“Abc”)) // true
在这里插入图片描述

11) 返回子串在字符串第一次出现的 index 值, 如果没有返回-1 : strings.Index(“NLT_abc”, “abc”) // 4
在这里插入图片描述

12) 返回子串在字符串最后一次出现的 index, 如没有返回-1 : strings.LastIndex(“go golang”, “go”)
在这里插入图片描述

13) 将指定的子串替换成 另外一个子串: strings.Replace(“go go hello”, “go”, “go 语言”, n) n 可以指定你希望替换几个, 如果 n=-1 表示全部替换。将“go go hello”中的所有的n个“go”替换为“go语言”。

在这里插入图片描述
14) 按 照 指 定 的 某 个 字 符 , 为 分 割 标 识 , 将 一 个 字 符 串 拆 分 成 字 符 串 数 组 :strings.Split(“hello,wrold,ok”, “,”)
在这里插入图片描述

15) 将字符串的字母进行大小写的转换: strings.ToLower(“Go”) // go strings.ToUpper(“Go”) // GO
在这里插入图片描述

16) 将字符串左右两边的空格去掉: strings.TrimSpace(" tn a lone gopher ntrn ")
在这里插入图片描述

17) 将字符串左右两边指定的字符去掉 : strings.Trim("! hello! “, " !”) // [“hello”] //将左右两边 !和 " "去掉
在这里插入图片描述

18) 将字符串左边指定的字符去掉 : strings.TrimLeft("! hello! “, " !”) // [“hello”] //将左边 ! 和 ""去掉

19) 将字符串右边指定的字符去掉 : strings.TrimRight("! hello! “, " !”) // [“hello”] //将右边 ! 和 ""去掉

20) 判断字符串是否以指定的字符串开头: strings.HasPrefix(“ftp://192.168.10.1”, “ftp”) // true

在这里插入图片描述
21) 判断字符串是否以指定的字符串结束: strings.HasSuffix("NLT_abc.jpg", "abc") //false

2 日期时间相关函数

  1. 时间和日期相关函数, 需要导入 time 包
    在这里插入图片描述
  2. time.Time 类型, 用于表示时间
    在这里插入图片描述
  3. 如何获取到其它的日期信息
    在这里插入图片描述
  4. 格式化日期时间

方式 1: 就是使用 Printf 或者 SPrintf

在这里插入图片描述
方式二: 使用 time.Format() 方法完成:

在这里插入图片描述
对上面代码的说明:

"2006/01/02 15:04:05" 这个字符串的各个数字是固定的, 必须是这样写。
"2006/01/02 15:04:05" 这个字符串各个数字可以自由的组合, 这样可以按程序需求来返回时间
和日期

  1. 时间的常量
const (
	Nanosecond Duration = 1 //纳秒
	Microsecond = 1000 * Nanosecond //微秒
	Millisecond = 1000 * Microsecond //毫秒
	Second = 1000 * Millisecond //秒
	Minute = 60 * Second //分钟
	Hour = 60 * Minute //小时
)

常量的作用:在程序中可用于获取指定时间单位的时间, 比如想得到 100 毫秒
100 * time. Millisecond

  1. 结合 Sleep
    在这里插入图片描述
  2. time 的 Unix 和 UnixNano 的方法
    在这里插入图片描述
    在这里插入图片描述

3 内置函数

Golang 设计者为了编程方便, 提供了一些函数, 这些函数可以直接使用, 我们称为 Go 的内置函数。 文档: https://studygolang.com/pkgdoc -> builtin

  1. len: 用来求长度, 比如 string、 array、 slice、 map、 channel
  2. new: 用来分配内存, 主要用来分配值类型, 比如 int、 float32,struct…返回的是指针
    举例说明 new 的使用:
    在这里插入图片描述
    内存图分析:
    在这里插入图片描述
  3. make: 用来分配内存, 主要用来分配引用类型, 比如 channel、 map、 slice。 这个我们后面讲解。

4 错误处理

4.1 先看一个例子

在这里插入图片描述
对上面代码的分析:

  1. 在默认情况下, 当发生错误后(panic) ,程序就会退出(崩溃.)
  2. 如果我们希望: 当发生错误后, 可以捕获到错误, 并进行处理, 保证程序可以继续执行。 还可
    以在捕获到错误后, 给管理员一个提示(邮件,短信。 。 。 )
  3. 这里引出我们要将的错误处理机制

4.2 基本说明

  1. Go 语言追求简洁优雅, 所以, Go 语言不支持传统的 try…catch…finally 这种处理。
  2. Go 中引入的处理方式为: defer, panic, recover
  3. 这几个异常的使用场景可以这么简单描述: Go 中可以抛出一个 panic 的异常, 然后在 defer 中
    通过 recover 捕获这个异常
    , 然后正常处理

4.3 defer+recover处理错误

package main
import (
	"fmt"
	_ "time"
	"errors"
)

func test() {
	//使用defer + recover 来捕获和处理异常
	defer func() {
		err := recover()  // recover()内置函数,可以捕获到异常
		if err != nil {  // 说明捕获到错误
			fmt.Println("err=", err)
			//这里就可以将错误信息发送给管理员....
			fmt.Println("发送邮件给admin@sohu.com~")
		}
	}()
	num1 := 10
	num2 := 0
	res := num1 / num2
	fmt.Println("res=", res)
}



func main() {

	测试
	 test()
	 for {
	 	fmt.Println("main()下面的代码...")
	 	time.Sleep(time.Second)
	 }
}

可以看到错误处理的好处:程序不会轻易挂掉,如果加入了预警代码,就可以让程序更加的健壮。

4.4 自定义错误

Go 程序中, 也支持自定义错误, 使用 errors.New 和 panic 内置函数

  1. errors.New(“错误说明”) , 会返回一个 error 类型的值, 表示一个错误
  2. panic 内置函数 ,接收一个 interface{}类型的值(也就是任何值了) 作为参数。 可以接收 error 类
    型的变量, 输出错误信息, 并退出程序.

案例说明

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值