全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📝 1 篇文章 20 道配套习题

GO标准库专题

专题说明

本专题系统讲解Go语言常用标准库的核心功能与使用方法,帮助进阶开发者掌握http、json、io、strings、os、net、flag、time等核心包的高效应用。

学习目标

  1. 掌握http包的HTTP客户端与服务器开发
  2. 学会encoding/json的序列化与反序列化
  3. 理解io包的读写接口与常用函数
  4. 掌握strings包的字符串操作函数
  5. 学会os包的文件与环境变量操作
  6. 理解net包的网络编程基础

学习内容

  • http包:HTTP客户端、服务器、请求处理、超时设置
  • encoding/json包:Marshal/Unmarshal、struct tag
  • io包:Reader/Writer接口、Copy、ReadAll
  • strings包:Contains、Split、Join、Replace
  • os包:文件操作、环境变量、进程信息
  • net包:Dial、Listen、DNS查询
  • flag包:命令行参数解析
  • time包:时间格式化、定时器

学习建议

  1. 标准库是Go的精华,深入学习官方文档
  2. 重点掌握http和json包,这是Web开发基础
  3. 理解io接口体系,这是Go的流式处理核心
  4. 多看标准库源码,学习Go的设计思想
  5. 实践中善用strings和os包简化开发

📝 发现内容有误?点击此处直接编辑

📝 配套习题(20 题)

1
单选题

使用http.Client发送请求时,如何设置请求超时时间以避免请求无限等待?

A

设置Client.Timeout字段

B

使用context.WithTimeout

C

在请求Header中设置Timeout

D

A和B都可以

2
单选题

在http服务端处理请求时,如何优雅地处理超时并中断请求处理?

A

使用ResponseWriter.Close()

B

使用context的超时机制

C

设置http.Server的Timeout字段

D

B和C结合使用

3
单选题

关于http.Transport的连接池和Keep-Alive机制,以下哪个说法正确?

A

默认启用Keep-Alive,连接池最大100个空闲连接

B

默认禁用Keep-Alive,需手动设置EnableKeepAlives

C

连接池大小不可调整

D

Keep-Alive只影响服务端

4
多选题

http.Client的结构体可以配置以下哪些字段?

A

Transport(传输层配置)

B

Timeout(超时时间)

C

CheckRedirect(重定向处理)

D

CookieJar(Cookie存储)

5
多选题

http.Server结构体可以配置以下哪些超时相关字段?

A

ReadTimeout(读取超时)

B

WriteTimeout(写入超时)

C

IdleTimeout(空闲超时)

D

ReadHeaderTimeout(读取Header超时)

6
填空题

Go发送HTTP请求的基本流程:使用 _______________ 创建 ________ ;使用 ______________ 发送 ______ ;使用 _______________ 关闭 ______ ;使用 __________ 读取 ________

7
填空题

Go HTTP服务端基本结构: _______________ 注册 _______________________________ 启动 _________________________ 用于 ____________________ 包含 ________

8
判断题

使用http.Client发送请求后,必须调用resp.Body.Close()关闭响应体,否则会导致连接无法复用,资源泄漏。

A

B

9
判断题

http.Get()和http.Post()使用DefaultClient,没有设置超时时间,生产环境应避免使用这些便捷函数。

A

B

10
单选题

将Go结构体转换为JSON字符串应使用encoding/json包的哪个函数?

A

json.Marshal()

B

json.Unmarshal()

C

json.Encode()

D

json.Decode()

11
单选题

Go结构体中json标签json:"name,omitempty"的作用是什么?

A

字段名为name,零值时省略

B

字段必须存在且不能为空

C

字段名必须为name,值可为空

D

字段名为omitempty,值为name

12
多选题

encoding/json包提供以下哪些处理JSON的方式?

A

json.Marshal/Unmarshal(字节切片)

B

json.Encoder/Decoder(流式处理)

C

json.RawMessage(延迟解析)

D

json.Number(数字类型)

13
判断题

json.Unmarshal()函数必须传入指针作为目标对象,否则无法修改目标对象的值。

A

B

14
填空题

JSON结构体标签: _______________ 指定 _______________ 表示 ____________________________ 表示 ______________ 表示 ____________

15
单选题

Go语言中获取当前时间的函数是?

A

time.Now()

B

time.Current()

C

time.Today()

D

time.Get()

16
判断题

Go语言中time.Parse的格式字符串使用特定数字"2006-01-02 15:04:05"作为模板,这些数字是固定的,代表年份、月份、日期、小时、分钟、秒。

A

B

17
填空题

Go时间操作: ________ 获取 ________________ 添加 ________________ 计算 ________________ ______ 指定时长。

18
单选题

Go的flag包用于解析命令行参数,以下哪个是正确的整数参数定义方式?

A

flag.Int("port", 8080, "服务端口")

B

flag.Integer("port", 8080, "服务端口")

C

flag.Number("port", 8080, "服务端口")

D

flag.Arg("port", 8080, "服务端口")

19
单选题

flag包支持自定义参数类型,需要实现哪个接口?

A

flag.Value接口

B

flag.Custom接口

C

flag.Parser接口

D

flag.Handler接口

20
多选题

flag包提供以下哪些类型的参数定义函数?

A

flag.Int/IntVar(整数)

B

flag.String/StringVar(字符串)

C

flag.Bool/BoolVar(布尔)

D

flag.Float64/Float64Var(浮点数)

← 上一个专题 GO方法与接口专题
下一个专题 → GO流程控制专题

📝 发现内容有误?点击此处直接编辑

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库