常用函数、包、第三方包

一、常用的内置函数

函数名说明案例
string将该数字转换成ASCII码值等于该整形数字的字符;将字节码转化成字符串;
len获取字符串slicearraymap的长度
append用于 slice 的元素添加操作(增、删),append会分配一个更大数组来容纳 slice,导致底层数组变化a = append(a, 1, 2)
delete用于 map 中的元素

二、 常用的包

常用包常用方法说明案例注意事项
time用于操作时间函数
NowNow返回当前本地时间t:=time.Now()
获取当天0点的时间戳time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location()).Unix()
strings用于操作字符的简单函数
Join将子串连接成一个单独的字符串,子串之间用标识符分隔(切片或数组转成字符串)strings.Join([]string{"a", "b", "c"},,"|")
Split将字符串中的每一个字符分割成一个单独的元素(字符串切割成切片)strings.Split(s, ",")
TrimSuffix移除后缀strings.TrimSuffix("101123297857.html", ".html")
Count返回字符串s中有几个重复的sep子串。strings.Count(s, sep string)
Index子串sep在字符串s中第一次出现的位置,不存在则返回-1。strings.Index(s, sep string)
LastIndex子串sep在字符串s中最后一次出现的位置,不存在则返回-1。strings.LastIndex(s, sep string)
Replace返回将s中前n个不重叠old子串都替换为new的新字符串,如果n<0会替换所有old子串。strings.Replace(s, old, new string, n int) string
Trim去掉字符串中的某值strings.Trim("ti tle", " ")
Contains判断字符串中是否包含某个子串。包含或者子串为空则返回truestrings.Contains("hello world hello world", "wo")
EqualFold判断两个utf-8编码字符串(将unicode大写、小写、标题三种格式字符视为相同)是否相同。strings.EqualFold("Go", "go")
strconv提供字符串与基本数据类型互转的能力。
Atoistring到intint,err:=strconv.Atoi("string")
ParseIntstring到int64int64,err:=strconv.ParseInt(string, 10, 64)
Itoaint到stringstring:=strconv.Itoa(int)
FormatIntint64到stringstring:=strconv.FormatInt(int64, 10)
ParseFloatstring到float32(转成float64?)float32, err := strconv.ParseFloat(string, 32)
ParseFloatstring到float64float64, err := strconv.ParseFloat(string, 64)
FormatFloatfloat64 到 string(没有精度损失)strconv.FormatFloat(value, 'G', -1, 64)
-int64到intint:=int(int64)
-int到int64int64:=int64(int)
sync它提供了基本的同步原语。在多个goroutine访问共享资源的时候,需要使用sync中提供的锁机制。
WaitGroup协程等待Add(1) Done() Wait()
Mutex互斥锁Lock() Unlock()
RWMutex读写互斥锁Lock() UnLock() Rlock() Runlock()
sync/atomicatomic包提供了底层的原子级内存操作。解决了CPU多线程的并发问题。
fmt实现格式化的输入输出操作,其中的fmt.Printf()和fmt.Println()是开发者使用最为频繁的函数。
log实现了简单的日志服务
Println格式化输出,有时间log.Println(“Hello”)
io实现了一系列非平台相关的IO相关接口和实现,比如提供了对os中系统相关的IO功能的封装。我们在进行流式读写(比如读写文件)时,通常会用到该包。
bufio它在io的基础上提供了缓存功能。在具备了缓存功能后, bufio可以比较方便地提供ReadLine之类的操作。
os本包提供了对操作系统功能的非平台相关访问接口。接口为Unix风格。提供的功能包括文件操作、进程管理、信号和用户账号等。
Remove删除文件os.Remove("删除图片的地址")
MkdirAll创建多级目录os.MkdirAll(dir, 0666) 0666是文件的权限
Args保管命令行参数os.Args
os/exec执行命令行命令
exec.Command执行指定的程序exec.Command("notepad") cmd := exec.Command("taskkill", "/f", "/im", "notepad.exe") cmd.Run()
flag它提供命令行参数的规则定义和传入参数解析的功能。绝大部分的命令行程序都需要用到这个包。
encoding/jsonJSON目前广泛用做网络程序中的通信格式。本包提供了对JSON的基本支持,比如从一个对象序列化为JSON字符串,或者从JSON字符串反序列化出一个具体的对象等。
http通过http包,只需要数行代码,即可实现一个爬虫或者一个Web服务器,这在传统语言中是无法想象的。
net网络I/O接口,包括TCP/IP、UDP、域名解析和Unix域socket
listen返回在一个本地网络地址laddr上监听的Listener(开启一个服务)lis, err := net.Listen("tcp", 5501)
match提供了常用的数学函数
ceil向上取整math.Ceil(1.2) // 2
floor向下取整math.Floor(1.2) // 1
Max取最大值math.Max(float64(a), float64(b))
Min取最小值math.Min(float64(a), float64(b))
path实现了对斜杠分隔的路径的实用操作函数
ExtExt函数返回path文件扩展名path.Ext(链接地址)
encoding/json实现了 Json 对象的编解码
MarshalJson 序列化json.Marshal(req)
UnMarshalJson 返序列化,解析x的值存入vjson.Unmarshal(x, &v)
Marshal将数据编码成 Json 字符串cont, err := json.Marshal(group)
regexp正则表达式
MustCompile全局正则表达式变量的安全初始化re := regexp.MustCompile(反引号<td class="zblist_xm"><a href="([^"]+)" target="_blank">(.*)</a></td>反引号)
JsonJson处理
Unmarshal解析Json数据json.Unmarshal([]byte(Json字符串), &映射结构)由于json.UnMarshal()方法接收的是字节切片,所以首先需要把JSON字符串转换成字节切片c := []byte(s)
Sortsort包提供了排序切片和用户自定义数据集的函数
Slice对(一维或多维)切片进行排序使用方法见下方示例
html供了用于转义和解转义HTML文本的函数
EscapeString转义
UnescapeString解转义
1、sort.Slice 对切片进行排序
package main

import (
    "fmt"
    "sort"
)

type myDataType struct {
    name string
    age  int
}

func main() {
    mySlice := make([]myDataType, 0)
    mySlice = append(mySlice, myDataType{"김형준", 42})
    mySlice = append(mySlice, myDataType{"홍길동", 28})
    mySlice = append(mySlice, myDataType{"임꺽정", 38})
    fmt.Println(mySlice)
    // 按照年龄对切片进行排序
    sort.Slice(mySlice, func(i, j int) bool {
        return mySlice[i].age < mySlice[j].age
    })
    fmt.Println(mySlice)

三、第三方安装包官方地址

第三方包的使用

名称关键词地址
验证码captchagithub.com/astaxie/beego/utils/captcha
图片剪切、修改尺寸https://github.com/hunterhug/go_image
生成二维码https://github.com/skip2/go-qrcode
golang 操作 redishttps://github.com/go-redis/redis
支付宝支付https://github.com/smartwalle/alipay/
微信公众号、支付、授权等相关(推荐使用)github.com/silenceper/wechat/v2
微信支付https://github.com/objcoding/wxpay
redis操作,很好用github.com/gomodule/redigo/redis
日志库zap(输出、打印格式化的日志)zapgo.uber.org/zap
执行定时任务crongithub.com/robfig/cron/v3
异步任务消息(推荐使用,支持redis、amqp,不支持kafka)Machinerygithub.com/RichardKnop/machinery/v2
热加载工具(输入fresh就可使用)freshgithub.com/pilu/fresh
读取Yaml配置文件Yamlgopkg.in/yaml.v2
YAML配置文件go.uber.org/config
对json文件进行操作(推荐使用)gjsongithub.com/tidwall/gjson
Json解析器jsonparsergithub.com/buger/jsonparser
创建CLI应用程序的库(常用)cobragithub.com/spf13/cobra
版本比较go-versiongithub.com/hashicorp/go-version
导入文件的内容embed
excel 导入导出excelgithub.com/xuri/excelize/v2
kafka 插件saramagithub.com/Shopify/sarama
解析Html(推荐使用)goquerygithub.com/PuerkitoBio/goquery
抓取的html页面编码转换iconv-gogithub.com/djimenez/iconv-go
数据类型转换(好用)castgithub.com/spf13/cast
高性能的httpfasthttpgithub.com/valyala/fasthttp
发送各种形式的http请求(功能比较全)go-restyhttps://github.com/go-resty/resty
不同类型之间的赋值(推荐)copiergithub.com/jinzhu/copier
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值