【golang学习笔记1.7】 golang中的函数得使用

发布时间:2022-10-12 12:30

defer

在函数中,程序员经常创建资源(比如:数据库得连接,锁等),为了在函数执行完毕后,及时得释放资源,defer 就可以使用了(延时机制)

字符串常用得系统函数

  1. 统计字符串长度: len(str) ; 返回字符串或者数组的长度
  2. 字符串遍历,同时处理含有中文得问题: arr:=[]run(str); 将字符串转换成切片
示例:
   str:="你好,abc"
      for i := 0; i <len(str); i++ {
        fmt.Printf("i: %c\n", str[i])
      }
打印输出
i: äi: ½i:  i: åi: ¥i: ½i: ,i: ai: bi: c      
因为含有中文字符,如果不进行转换,则打印输出会乱,不是我们想要的结果
    str:="你好,abc"
      arr:=[]rune(str)
      for i := 0; i <len(arr); i++ {
        fmt.Printf("i: %c ", arr[i])
      }
打印输出
i: 你 i: 好 i: , i: a i: b i: c        
  1. 字符串转整数: strconv.Atoi(str)
  //strconv.Atoi 有2个返回值,一个是转换成功的数值,一个是转换不成功的错误返回
  num,err:=strconv.Atoi("123")
      if err != nil{
            fmt.Printf("err: %v\n", err)
      }else{
           fmt.Printf("num: %v\n", num)
      }
  1. 整数转字符串: strconv.Itoa(int)
  2. 字符串转byte: []byte(str)
  3. byte转字符串:str=string([]byte{97,98,99})
  4. 进制转换 :str=strconv.FormatInt(int64,int);int64 要转换的数字;int 要转换的进制 2,8,10 转换的结果为对应的字符串
  5. 判断字符串是否在另一个字符串中:strings.Contains(“hello,world”,“world”) 如果在 则返回true否则false
  6. 判断字符串在另一个字符串中有几个:strings.Count(“hello,world”,“world”) 返回包含个数
  7. 不区分大小写进行判断:strings.EqualFold(“hello,world”,“world”) 返回bool类型
  8. 区分大小写判断使用 abc==Abc == 相当于全等于
  9. 返回一个字符串在另一个字符串首次出现的下标值: str:=strings.Index(“hello,world”,“world”) 返回int 类型
  10. 返回一个字符串在另一个字符串最后一次出现的下标值: str:=strings.LastIndex(“hello,world”,“world”) 返回int 类型
  11. 字符串替换:strings.Replace(str,str2,str3,num)
   //第一个参数是需要匹配的字符串
   //第二个参数是需要替换字符串
   //第三个是要替换的字符串
   //第四个是如果有多个要替换的字符串,那么代表要替换的数量 -1为全部替换
   num:=strings.Replace("hhhhh,world","h","北京",1)
  1. 按照指定字符切割字符串为字符串数组:strings.Split(“h,h,h,h,h,world”,“,”)
   //根据,分割;返回字符串数组切片
   num:=strings.Split("h,h,h,h,h,world",",")
   fmt.Printf("type=%T,num=%v\n", num,num)
   打印结果
   type=[]string,num=[h h h h h world]
  1. 字符串中字母的大小写转换函数 strings.ToLower(“GO”);转小写。strings.ToUpper(“go”);转大写。
  2. 字符串左右俩边的空格去掉:strings.TrimSpace(" go ")
  3. 将字符串左右俩边指定字符去掉:strings.Trim(“!go!”,“!”)
  4. 将字符串左边指定字符去掉:strings.TrimLeft(“!go!”,“!”)
  5. 将字符串右边指定字符去掉:strings.TrimRight(“!go!”,“!”)
  6. 判断字符串是否以指定字符串开头:strings.HasPrefix(“https://go.com”,“https”);返回bool类型
  7. 判断字符串是否以指定字符串结尾:strings.HasSuffix(“GO.jpg”,“jpg”);返回bool类型
  8. 后续补充…jpg
  9. go文档地址:https://studygolang.com/pkgdoc

时间和日期相关函数

  1. 初始化时间 now()
   // Now返回当前本地时间
    now:=time.Now()
    fmt.Printf("now: %v\n", now)
    now:=time.Now()
    fmt.Printf("年: %v\n", now.Year())
    now:=time.Now()
    fmt.Printf("月: %v\n", now.Month())//英文月
    fmt.Printf("月: %v\n", int(now.Month()))//数字月
    now:=time.Now()
    fmt.Printf("日: %v\n", now.Day())
    now:=time.Now()
    fmt.Printf("时: %v\n", now.Hour())
    now:=time.Now()
    fmt.Printf("分: %v\n", now.Minute())
    now:=time.Now()
    fmt.Printf("秒: %v\n", now.Second())
  1. 格式化时间
   // Now返回当前本地时间
    now:=time.Now()
    //返回当前时间格式为年月日时分秒【2006/01/02 15:04:05为固定值;不可变】
    //由来2006为Golang诞生时间,15是下午3点。
    //帮助记忆的方法:1月2日3点4分5秒,2006年,-7时区,正好是1234567。
    //2006/01/02 15/04/05 可以自由组合返回时间
    date:=now.Format("2006-01-02 15:04:05")
    fmt.Printf("date: %v\n", date)
  1. 时间单位
    Nanosecond  Duration = 1 //1纳秒
    Microsecond          = 1000 * Nanosecond  //1微妙=1000*纳秒
    Millisecond          = 1000 * Microsecond //1毫秒=1000*1微妙
    Second               = 1000 * Millisecond //1秒=1000*1毫秒
    Minute               = 60 * Second        //1分钟=60*1秒
    Hour                 = 60 * Minute        //1小时=60*1分钟
  1. 获取时间戳
 // Now返回当前本地时间
    now:=time.Now()
    unix:=now.Unix()
    unixnano:=now.UnixNano()
    fmt.Printf("unix: %v\n", unix)
    fmt.Printf("unixnano: %v\n", unixnano)
    //打印结果
    // unix: 1658126367
    //unixnano: 1658126367931653600 

错误处理

  1. defer,panic,recover 可以使用defer+recover来处理异常
   //定义一个匿名函数
   defer func ()  {
        //recover()函数可以捕捉到异常
        err:=recover()
        //如果捕捉到了异常就输出异常信息
        if err !=nil{
            fmt.Printf("err: %v\n", err)
        }      
    }()
  1. panic输出错误并终止程序
     panic("终止程序,并输出错误")
  1. 自定义错误
package main
import (
	"errors"//引用包
	"fmt"
)
func main(){
    err:= errors.New("我是自定义错误")
    fmt.Printf("err: %v\n", err)
}

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号