全部学科
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发送请求后,必须调用resp.Body.Close()关闭响应体,否则会导致连接无法复用,资源泄漏。

A

B

2

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

A

B

3

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

A

B

4

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

A

B

单选题
5

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

A

字段名为name,零值时省略

B

字段必须存在且不能为空

C

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

D

字段名为omitempty,值为name

6

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

A

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

B

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

C

连接池大小不可调整

D

Keep-Alive只影响服务端

7

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

A

flag.Value接口

B

flag.Custom接口

C

flag.Parser接口

D

flag.Handler接口

8

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

A

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

B

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

C

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

D

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

9

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

A

使用ResponseWriter.Close()

B

使用context的超时机制

C

设置http.Server的Timeout字段

D

B和C结合使用

10

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

A

json.Marshal()

B

json.Unmarshal()

C

json.Encode()

D

json.Decode()

11

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

A

设置Client.Timeout字段

B

使用context.WithTimeout

C

在请求Header中设置Timeout

D

A和B都可以

12

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

A

time.Now()

B

time.Current()

C

time.Today()

D

time.Get()

多选题
13

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

A

Transport(传输层配置)

B

Timeout(超时时间)

C

CheckRedirect(重定向处理)

D

CookieJar(Cookie存储)

14

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

A

json.Marshal/Unmarshal(字节切片)

B

json.Encoder/Decoder(流式处理)

C

json.RawMessage(延迟解析)

D

json.Number(数字类型)

15

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

A

ReadTimeout(读取超时)

B

WriteTimeout(写入超时)

C

IdleTimeout(空闲超时)

D

ReadHeaderTimeout(读取Header超时)

16

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

A

flag.Int/IntVar(整数)

B

flag.String/StringVar(字符串)

C

flag.Bool/BoolVar(布尔)

D

flag.Float64/Float64Var(浮点数)

填空题
17

JSON结构体标签: ____________ 指定 ________________________ 表示 零值时省略 ; json:"-" 表示 忽略字段 ; string 表示 数字转字符串 。

18

Go发送HTTP请求的基本流程:使用 ____________ 创建 ____________ ;使用 ____________ 发送 请求 ;使用 resp.Body.Close 关闭 响应体 ;使用 io.ReadAll 读取 响应内容 。

19

Go时间操作: ____________ 获取 ________________________ 添加 时间间隔 ; time.Sub 计算 时间差 ; time.Sleep 休眠 指定时长。

20

Go HTTP服务端基本结构: ____________ 注册 ________________________ 启动 服务器 ; http.ResponseWriter 用于 写入响应 ; http.Request 包含 请求信息 。

参考答案
1.正确 2.正确 3.正确 4.正确 5.A 6.A 7.A 8.A 9.D 10.A 11.D 12.A 13.A;B;C;D 14.A;B;C;D 15.A;B;C;D 16.A;B;C;D 17.json:"name;字段名;omitempty 18.http.NewRequest;请求对象;http.Client.Do 19.time.Now;当前时间;time.Add 20.http.HandleFunc;路由处理函数;http.ListenAndServe
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 GO方法与接口专题
下一个专题 → GO流程控制专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码