GO标准库专题测试
考察知识点
1. net/http包(HTTP客户端与服务端)
- HTTP客户端:
- http.Get/Post:简单HTTP请求
- http.Client:自定义客户端、超时设置
- http.NewRequest:创建自定义请求
- Context超时:context.WithTimeout控制请求超时
- HTTP服务端:
- http.ListenAndServe:启动HTTP服务器
- http.HandleFunc:注册路由处理函数
- http.Handler接口:自定义处理器
- 超时设置:
- Client.Timeout:整体超时设置
- Transport分阶段超时:连接/握手/响应头超时
- Context超时:灵活控制每个请求超时
- 响应体关闭:resp.Body.Close()必须调用、防止资源泄漏
2. io包(输入输出操作)
- io.Reader接口:Read方法读取数据
- io.Writer接口:Write方法写入数据
- io.Copy:数据拷贝、从Reader拷贝到Writer
- io.ReadAll:读取全部数据、返回[]byte
- io.LimitReader:限制读取字节数
- io.Pipe:管道、同步读写
- io.MultiReader/MultiWriter:组合多个Reader/Writer
3. bufio包(缓冲IO)
- bufio.Reader:缓冲读取、提高读取效率
- bufio.Writer:缓冲写入、提高写入效率
- bufio.Scanner:逐行扫描、读取行数据
- bufio.ReadWriter:组合Reader和Writer
- 缓冲区大小:默认4096字节、可自定义
4. strings包(字符串处理)
- 字符串判断:
- Contains:判断是否包含子串
- HasPrefix/HasSuffix:前缀后缀判断
- 字符串操作:
- Split:分割字符串
- Join:拼接字符串数组
- Replace/ReplaceAll:替换字符串
- Trim/TrimSpace:去除空白/字符
- 字符串转换:
- ToUpper/ToLower:大小写转换
- Title:标题格式化
- 字符串查找:
- Index/IndexAny:查找位置
- Count:统计出现次数
5. strconv包(字符串转换)
- 数值转字符串:
- Itoa:int转string
- FormatFloat/FormatInt:格式化数值
- 字符串转数值:
- Atoi:string转int
- ParseFloat/ParseInt:解析数值
- 布尔转换:
- ParseBool:字符串转bool
- FormatBool:bool转字符串
- Quote/Unquote:字符串引号处理
6. os包(文件与系统操作)
- 文件操作:
- os.Open:只读打开文件
- os.Create:创建或截断文件
- os.OpenFile:灵活控制打开模式
- os.Remove:删除文件
- 文件信息:
- os.Stat:获取文件信息
- os.IsExist/IsNotExist:判断文件存在
- 目录操作:
- os.Mkdir/MkdirAll:创建目录
- os.ReadDir:读取目录内容
- 系统操作:
- os.Getenv/LookupEnv:读取环境变量
- os.Exit:退出程序
- os.Args:命令行参数
7. net包(网络编程)
- 建立连接:
- net.Dial:主动建立连接
- net.DialTimeout:带超时连接
- 创建监听:
- net.Listen:创建监听器
- listener.Accept:接受连接
- 地址解析:
- net.ResolveIPAddr:解析IP地址
- net.ResolveTCPAddr:解析TCP地址
- net.ResolveUDPAddr:解析UDP地址
- DNS查询:
- net.LookupHost:查询主机IP
- net.LookupCNAME:查询CNAME
- net.LookupAddr:反向查询
- net.LookupMX/NS/SRV:查询特殊记录
8. flag包(命令行参数解析)
- 参数定义:
- flag.Int/String/Bool/Float64:定义参数
- flag.IntVar/StringVar:绑定到变量
- 参数解析:
- flag.Parse:解析命令行参数
- flag.Args:获取非flag参数
- 参数访问:
- flag.Lookup:查找参数定义
- flag.Visit:访问已设置的参数
- 帮助信息:-h/--help显示帮助
9. encoding/json包(JSON编解码)
- JSON编码:
- json.Marshal:Go值转JSON字节
- json.MarshalIndent:格式化输出
- JSON解码:
- json.Unmarshal:JSON字节转Go值
- json.Decoder:流式解码
- JSON流式处理:
- json.Encoder:流式编码
- json.Decoder:从Reader解码
- 字段标签:struct tag控制JSON字段名和选项
10. encoding/xml包(XML编解码)
- XML编码:xml.Marshal编码Go值
- XML解码:xml.Unmarshal解码XML
- XML流式处理:xml.Encoder/Decoder
- XML标签:struct tag控制XML元素和属性
11. time包(时间处理)
- 当前时间:time.Now获取当前时间
- 时间格式化:Format方法格式化时间
- 时间解析:Parse方法解析时间字符串
- 时间计算:Add/Sub/AddDate计算时间
- 时间戳:Unix/UnixNano获取时间戳
- 定时器:Timer/Ticker定时和周期触发
- Sleep:time.Sleep暂停执行
12. math包(数学计算)
- 常数:math.Pi/E等数学常数
- 基本运算:Abs/Min/Max/Pow
- 三角函数:Sin/Cos/Tan
- 取整函数:Floor/Ceil/Round
- 随机数:math/rand包伪随机数生成
- 位运算:math/bits包位操作
13. log包(日志记录)
- 基本日志:
- log.Print/Printf/Println:普通日志
- log.Fatal:记录日志并退出
- log.Panic:记录日志并panic
- 自定义Logger:
- log.New:创建自定义Logger
- log.SetFlags/SetPrefix:设置格式和前缀
- 日志输出:可指定输出目标(文件、标准输出等)
14. sync包(同步原语)
- Mutex:互斥锁、保护共享资源
- RWMutex:读写锁、读写分离
- WaitGroup:等待一组goroutine完成
- Once:单次执行
- Cond:条件变量
- Pool:对象池
15. path/filepath包(路径处理)
- 路径拼接:filepath.Join拼接路径
- 路径分割:filepath.Split分割路径
- 路径清理:filepath.Clean清理路径
- 路径匹配:filepath.Match/Glob匹配路径
- 文件遍历:filepath.Walk遍历目录树
- 扩展名:filepath.Ext获取扩展名
使用http.Client发送请求时,如何设置请求超时时间以避免请求无限等待?
在http服务端处理请求时,如何优雅地处理超时并中断请求处理?
关于http.Transport的连接池和Keep-Alive机制,以下哪个说法正确?
http.Client的结构体可以配置以下哪些字段?
http.Server结构体可以配置以下哪些超时相关字段?
Go发送HTTP请求的基本流程:使用 _______________ 创建 ________ ;使用 ______________ 发送 ______ ;使用 _______________ 关闭 ______ ;使用 __________ 读取 ________ 。
使用http.Client发送请求后,必须调用resp.Body.Close()关闭响应体,否则会导致连接无法复用,资源泄漏。
http.Get()和http.Post()使用DefaultClient,没有设置超时时间,生产环境应避免使用这些便捷函数。
json.Unmarshal()函数必须传入指针作为目标对象,否则无法修改目标对象的值。
Go的flag包用于解析命令行参数,以下哪个是正确的整数参数定义方式?
flag包支持自定义参数类型,需要实现哪个接口?
fmt.Printf中用于格式化整数的动词是?
strings包核心函数: ________________ 判断 ________ ; _____________ __________ ; ____________ __________ ; _______________ __________ 。
io.Reader接口的核心方法是?
io包实用函数: _______ ________ 到Writer; __________ ________ 数据; ______ 表示 ________ ; _______ 创建 ________ 。
os.Create函数的行为是什么?
log.Fatal()函数打印日志后会调用os.Exit(1)退出程序,之后的代码不会执行。
net包提供以下哪些核心函数用于网络操作?
Go HTTP服务端基本结构: _______________ 注册 ____________ ; ___________________ 启动 ______ ; ___________________ 用于 ________ ; ____________ 包含 ________ 。
net包TCP服务器: __________ 创建 ______ ; _______________ ________ ; _________ ________ ; __________ ________ ; __________ ________ 。
📝 发现内容有误?点击此处直接编辑
长按或扫描二维码,立即体验