练习 / go

Go 练习

Go 的全部练习都来自可随时对照的主题。

106项练习 离线运行
go 测验 新题 哪组声明能让 Go 包直接执行? 测验 入门 1分钟 · 来自 checkpoint-1 go 测验 新题 Go 如何让标识符可被其他包访问? 测验 入门 1分钟 · 来自 checkpoint-1 go 填空 新题 补全针对指针类型的编译期接口断言:`var _ Notifier = ______` 填空 高级 1分钟 · 来自 checkpoint-1 go 填空 新题 写出决定 `T` 或 `*T` 是否满足某个接口的集合名称 填空 进阶 1分钟 · 来自 checkpoint-1 go 填空 新题 写出模块根目录中声明模块路径和依赖要求的文件名 填空 入门 1分钟 · 来自 checkpoint-1 go 测验 新题 一个包含切片字段的结构体被赋值给另一个变量。哪项陈述正确? 测验 进阶 1分钟 · 来自 checkpoint-1 go 测验 新题 把值为 nil 的 `*ParseError` 存入 `error` 类型变量后,哪项说法正确? 测验 高级 1分钟 · 来自 checkpoint-1 go 填空 新题 写出变量声明时没有显式初始化器所获得的值的术语 填空 进阶 1分钟 · 来自 checkpoint-1 go 测验 新题 函数向切片追加元素时,哪条规则能保证无论是否分配新底层数组都得到正确结果? 测验 入门 1分钟 · 来自 checkpoint-2 go 测验 新题 关于延迟调用,哪项陈述正确? 测验 高级 1分钟 · 来自 checkpoint-2 go 测验 新题 一个哨兵错误经过两层包装后,哪种检查方式能保持调用方契约? 测验 高级 1分钟 · 来自 checkpoint-2 go 测验 新题 map 可以合法保存零值。代码应如何区分键不存在与键存在但值为零? 测验 进阶 1分钟 · 来自 checkpoint-2 go 填空 新题 写出向 nil map 写入条目时产生的运行时失败信息 填空 入门 1分钟 · 来自 checkpoint-2 go 填空 新题 写出内置函数名称:它在同一 goroutine 的延迟函数中被直接调用时,可以停止 panic 展开 填空 高级 1分钟 · 来自 checkpoint-2 go 填空 新题 在约束项 `int` 前加哪个符号,可以同时接受底层类型为 `int` 的命名类型? 填空 进阶 1分钟 · 来自 checkpoint-2 go 填空 新题 `fmt.Errorf` 使用哪个格式化动词既能补充上下文,又能保留错误供后续解包? 填空 进阶 1分钟 · 来自 checkpoint-2 go 填空 新题 有界工作池让生产者等待,而不是无限创建任务。写出这种流量控制效果的名称 填空 高级 1分钟 · 来自 checkpoint-3 go 填空 新题 函数调用 `context.WithTimeout` 后,即使操作提前结束,也必须调用哪个返回函数来释放资源? 填空 进阶 1分钟 · 来自 checkpoint-3 go 测验 新题 哪种工作循环设计能在请求取消后及时响应? 测验 高级 1分钟 · 来自 checkpoint-3 go 填空 新题 在 `value, ok := <-ch` 中,已关闭通道被取空后,哪个结果会变为 false? 填空 入门 1分钟 · 来自 checkpoint-3 go 测验 新题 一个服务结构体包含已经使用过的 `sync.Mutex`。哪项修改是安全的? 测验 进阶 1分钟 · 来自 checkpoint-3 go 测验 新题 `select` 如何处理通道为 nil 的发送或接收分支? 测验 进阶 1分钟 · 来自 checkpoint-3 go 测验 新题 向无缓冲通道发送值之前,必须发生什么,发送操作才能完成? 测验 入门 1分钟 · 来自 checkpoint-3 go 填空 新题 写出 `sync` 包中的类型名称:它用于等待一组已知 goroutine 全部调用 `Done` 填空 进阶 1分钟 · 来自 checkpoint-3 go 填空 新题 写出把缓冲字节推送到底层 writer 的 `bufio.Writer` 方法名 填空 入门 1分钟 · 来自 checkpoint-4 go 测验 新题 哪项操作能为 `http.Server` 实现有时限的优雅关闭? 测验 进阶 1分钟 · 来自 checkpoint-4 go 填空 新题 写出 `http.ResponseWriter` 的方法名:调用该方法后再修改普通响应头就太晚了 填空 进阶 1分钟 · 来自 checkpoint-4 go 测验 新题 HTTP API 必须拒绝拼错的 JSON 字段,而不是静默忽略。哪种解码器设置能落实这一契约? 测验 进阶 1分钟 · 来自 checkpoint-4 go 测验 新题 在身份验证边界,哪条审查规则能维护结构化日志契约? 测验 高级 1分钟 · 来自 checkpoint-4 go 填空 新题 查询没有返回任何行时,`QueryRow(...).Scan(...)` 会返回哪个哨兵错误? 填空 高级 1分钟 · 来自 checkpoint-4 go 测验 新题 一次 `io.Reader` 调用同时返回 `n > 0` 和 `err == io.EOF`。调用方应如何处理? 测验 入门 1分钟 · 来自 checkpoint-4 go 测验 新题 仓储层需要把切片安全绑定到 SQL 的 `IN` 子句,并支持 PostgreSQL 占位符。哪组步骤正确? 测验 高级 1分钟 · 来自 checkpoint-4 go 填空 新题 `testing.B` 的哪个字段提供基准测试主体必须使用的迭代次数? 填空 进阶 1分钟 · 来自 checkpoint-5 go 填空 新题 写出模糊测试方法名称:它在调用 `Fuzz` 前把已知输入加入种子语料库 填空 进阶 1分钟 · 来自 checkpoint-5 go 测验 新题 共享断言辅助函数把失败位置报告在自身代码行,而不是调用处。最小修复是什么? 测验 入门 1分钟 · 来自 checkpoint-5 go 填空 新题 写出用于检查 Go CPU 或堆 profile 的标准命令 填空 高级 1分钟 · 来自 checkpoint-5 go 填空 新题 哪个文件名后缀会让 Go 源文件进入测试构建? 填空 入门 1分钟 · 来自 checkpoint-5 go 测验 新题 基准测试在测量循环前执行了昂贵的夹具初始化。哪项修改能隔离被测操作的成本? 测验 高级 1分钟 · 来自 checkpoint-5 go 测验 新题 服务偶尔出现 goroutine 之间的调度延迟,但 CPU profile 没有显示主导函数。下一步最适合收集哪种证据? 测验 高级 1分钟 · 来自 checkpoint-5 go 测验 新题 `go vet ./...` 成功后,可以得出哪项结论? 测验 进阶 1分钟 · 来自 checkpoint-5 go 测验 新题 哪项操作会在不执行延迟调用的情况下终止? 理解 Go 的 defer 求值与执行顺序、panic 展开以及 recover 的严格边界,避免清理失效和误吞故障。 进阶 1分钟 · 来自 defer、panic 与 recover go 预测输出 新题 这段程序会输出什么? 理解 Go 的 defer 求值与执行顺序、panic 展开以及 recover 的严格边界,避免清理失效和误吞故障。 入门 2分钟 · 来自 defer、panic 与 recover go 测验 新题 recover 在什么情况下能停止 panic? 理解 Go 的 defer 求值与执行顺序、panic 展开以及 recover 的严格边界,避免清理失效和误吞故障。 进阶 1分钟 · 来自 defer、panic 与 recover go 审查 AI 代码 新题 审查生成的批量导出器 理解 Go 的 defer 求值与执行顺序、panic 展开以及 recover 的严格边界,避免清理失效和误吞故障。 高级 6分钟 · 来自 defer、panic 与 recover go 找出 bug 新题 找出批量摘要里的 bug 理解 Go 的 defer 求值与执行顺序、panic 展开以及 recover 的严格边界,避免清理失效和误吞故障。 进阶 4分钟 · 来自 defer、panic 与 recover go 测验 新题 错误链中可能包含 *PathError 时,哪种 errors.As 用法正确? Go 把错误作为值显式返回;这里讲清错误契约、错误包装、errors.Is、errors.As、多错误以及 typed nil 陷阱。 进阶 1分钟 · 来自 错误处理 go 测验 新题 关于 errors.Join,哪项说法正确? Go 把错误作为值显式返回;这里讲清错误契约、错误包装、errors.Is、errors.As、多错误以及 typed nil 陷阱。 进阶 1分钟 · 来自 错误处理 go 预测输出 新题 这段程序会输出什么? Go 把错误作为值显式返回;这里讲清错误契约、错误包装、errors.Is、errors.As、多错误以及 typed nil 陷阱。 入门 2分钟 · 来自 错误处理 go 审查 AI 代码 新题 审查生成的会话加载器 Go 把错误作为值显式返回;这里讲清错误契约、错误包装、errors.Is、errors.As、多错误以及 typed nil 陷阱。 高级 8分钟 · 来自 错误处理 go 找出 bug 新题 找出带类型 nil 错误里的 bug Go 把错误作为值显式返回;这里讲清错误契约、错误包装、errors.Is、errors.As、多错误以及 typed nil 陷阱。 进阶 4分钟 · 来自 错误处理 go 测验 新题 一个包替换了数据库,但希望调用方仍能匹配 ErrAccountMissing。哪种返回方式既保留契约,又不公开 sql.ErrNoRows? Go 错误包装用上下文串起失败原因,同时保留 errors.Is 和 errors.As 可检查的错误契约。 进阶 1分钟 · 来自 错误包装 go 预测输出 新题 这段程序会输出哪三个布尔值? Go 错误包装用上下文串起失败原因,同时保留 errors.Is 和 errors.As 可检查的错误契约。 进阶 2分钟 · 来自 错误包装 go 预测输出 新题 这段程序会输出什么? Go 错误包装用上下文串起失败原因,同时保留 errors.Is 和 errors.As 可检查的错误契约。 入门 2分钟 · 来自 错误包装 go 审查 AI 代码 新题 审查生成的操作错误包装器 Go 错误包装用上下文串起失败原因,同时保留 errors.Is 和 errors.As 可检查的错误契约。 高级 6分钟 · 来自 错误包装 go 找出 bug 新题 找出 errors.As 里的 bug Go 错误包装用上下文串起失败原因,同时保留 errors.Is 和 errors.As 可检查的错误契约。 进阶 4分钟 · 来自 错误包装 go 预测输出 新题 这段程序会输出什么? Go 源文件如何通过包、声明、类型、函数和控制流组成可执行程序,以及初学者最容易混淆的作用域与字符串规则。 入门 2分钟 · 来自 Go 语言基础 go 审查 AI 代码 新题 审查生成的限制摘要解析器 Go 源文件如何通过包、声明、类型、函数和控制流组成可执行程序,以及初学者最容易混淆的作用域与字符串规则。 进阶 8分钟 · 来自 Go 语言基础 go 测验 新题 当前代码块中已经声明的名称何时可以出现在 := 左侧? Go 源文件如何通过包、声明、类型、函数和控制流组成可执行程序,以及初学者最容易混淆的作用域与字符串规则。 入门 1分钟 · 来自 Go 语言基础 go 找出 bug 新题 找出端口选择里的 bug Go 源文件如何通过包、声明、类型、函数和控制流组成可执行程序,以及初学者最容易混淆的作用域与字符串规则。 进阶 4分钟 · 来自 Go 语言基础 go 测验 新题 使用 for index, value := range text 遍历 UTF-8 字符串时,index 与 value 分别是什么? Go 源文件如何通过包、声明、类型、函数和控制流组成可执行程序,以及初学者最容易混淆的作用域与字符串规则。 进阶 1分钟 · 来自 Go 语言基础 go 测验 新题 在约束中,int 与 ~int 有什么区别? 用类型参数、约束与类型集编写可复用且类型安全的 Go 代码,并避开命名类型、推断和泛型方法的常见陷阱。 进阶 1分钟 · 来自 泛型 go 测验 新题 Stack[T] 的一个操作需要把值转换为新类型 U。哪种声明是合法的 Go? 用类型参数、约束与类型集编写可复用且类型安全的 Go 代码,并避开命名类型、推断和泛型方法的常见陷阱。 进阶 1分钟 · 来自 泛型 go 预测输出 新题 这段程序会输出什么? 用类型参数、约束与类型集编写可复用且类型安全的 Go 代码,并避开命名类型、推断和泛型方法的常见陷阱。 入门 2分钟 · 来自 泛型 go 审查 AI 代码 新题 审查生成的稳定去重函数 用类型参数、约束与类型集编写可复用且类型安全的 Go 代码,并避开命名类型、推断和泛型方法的常见陷阱。 高级 6分钟 · 来自 泛型 go 找出 bug 新题 找出泛型排序约束里的 bug 用类型参数、约束与类型集编写可复用且类型安全的 Go 代码,并避开命名类型、推断和泛型方法的常见陷阱。 入门 4分钟 · 来自 泛型 go 测验 新题 已知 func (s *Sequence) Next() int,哪个编译期断言有效? Go 接口用方法集合描述行为;理解隐式实现、方法集、接口值与带类型的 nil,才能设计出窄而可靠的边界。 入门 1分钟 · 来自 接口 go 预测输出 新题 OrderID 值会进入哪个分支? Go 接口用方法集合描述行为;理解隐式实现、方法集、接口值与带类型的 nil,才能设计出窄而可靠的边界。 进阶 2分钟 · 来自 接口 go 预测输出 新题 这段程序会输出什么? Go 接口用方法集合描述行为;理解隐式实现、方法集、接口值与带类型的 nil,才能设计出窄而可靠的边界。 进阶 2分钟 · 来自 接口 go 审查 AI 代码 新题 审查生成的告警发送器 Go 接口用方法集合描述行为;理解隐式实现、方法集、接口值与带类型的 nil,才能设计出窄而可靠的边界。 高级 6分钟 · 来自 接口 go 找出 bug 新题 找出 map[any] 查询里的 bug Go 接口用方法集合描述行为;理解隐式实现、方法集、接口值与带类型的 nil,才能设计出窄而可靠的边界。 进阶 4分钟 · 来自 接口 go 测验 新题 以下哪项是合法的 Go map 类型声明? Go map 用键定位值;理解可比较键、零值、共享语义、无序遍历和并发边界,才能避开常见的数据错误。 入门 1分钟 · 来自 Map go 测验 新题 当 records 是 nil 的 map[string]int 时,哪项操作会发生 panic? Go map 用键定位值;理解可比较键、零值、共享语义、无序遍历和并发边界,才能避开常见的数据错误。 入门 1分钟 · 来自 Map go 预测输出 新题 这段程序会输出什么? Go map 用键定位值;理解可比较键、零值、共享语义、无序遍历和并发边界,才能避开常见的数据错误。 入门 2分钟 · 来自 Map go 审查 AI 代码 新题 审查生成的价格存储 Go map 用键定位值;理解可比较键、零值、共享语义、无序遍历和并发边界,才能避开常见的数据错误。 高级 6分钟 · 来自 Map go 找出 bug 新题 找出 map 字段更新里的 bug Go map 用键定位值;理解可比较键、零值、共享语义、无序遍历和并发边界,才能避开常见的数据错误。 进阶 4分钟 · 来自 Map go 测验 新题 已知 func (job *Job) Cancel(),哪个针对 interface{ Cancel() } 的编译期断言可以成立? Go 方法把行为关联到自定义类型;掌握值与指针接收者、方法集、方法值和嵌入提升,才能正确设计接口与状态更新。 进阶 1分钟 · 来自 方法 go 预测输出 新题 保存的方法值会输出什么? Go 方法把行为关联到自定义类型;掌握值与指针接收者、方法集、方法值和嵌入提升,才能正确设计接口与状态更新。 进阶 2分钟 · 来自 方法 go 预测输出 新题 这段程序会输出什么? Go 方法把行为关联到自定义类型;掌握值与指针接收者、方法集、方法值和嵌入提升,才能正确设计接口与状态更新。 入门 2分钟 · 来自 方法 go 审查 AI 代码 新题 审查生成的配额跟踪器 Go 方法把行为关联到自定义类型;掌握值与指针接收者、方法集、方法值和嵌入提升,才能正确设计接口与状态更新。 高级 6分钟 · 来自 方法 go 找出 bug 新题 找出 map 元素方法里的 bug Go 方法把行为关联到自定义类型;掌握值与指针接收者、方法集、方法值和嵌入提升,才能正确设计接口与状态更新。 进阶 4分钟 · 来自 方法 go 预测输出 新题 这段程序会输出什么? Go 的 reflect 包在运行时检查类型和值;掌握 Kind、可设置性、结构体标签与 nil 边界,避免动态代码中的 panic。 进阶 2分钟 · 来自 反射 go 审查 AI 代码 新题 审查生成的设置更新器 Go 的 reflect 包在运行时检查类型和值;掌握 Kind、可设置性、结构体标签与 nil 边界,避免动态代码中的 panic。 高级 6分钟 · 来自 反射 go 找出 bug 新题 找出 IsNil 辅助函数里的 bug Go 的 reflect 包在运行时检查类型和值;掌握 Kind、可设置性、结构体标签与 nil 边界,避免动态代码中的 panic。 进阶 4分钟 · 来自 反射 go 测验 新题 解码器为什么会使用 StructTag.Lookup("config"),而不是 Get("config")? Go 的 reflect 包在运行时检查类型和值;掌握 Kind、可设置性、结构体标签与 nil 边界,避免动态代码中的 panic。 进阶 1分钟 · 来自 反射 go 测验 新题 用一个 reflect.Value 设置另一个值之前,默认应使用哪项检查? Go 的 reflect 包在运行时检查类型和值;掌握 Kind、可设置性、结构体标签与 nil 边界,避免动态代码中的 panic。 进阶 1分钟 · 来自 反射 go 测验 新题 某方法声明为 func (*Worker) Stop()。哪个反射接收者能通过 MethodByName 找到它? Go 反射在运行时检查类型和值;理解 Type、Value、Kind、可设置性和 nil 边界,才能安全编写动态代码。 进阶 3分钟 · 来自 reflect.Type 与 reflect.Value go 测验 新题 遍历可能包含未导出字段的结构体时,哪项检查能保护 Value.Interface()? Go 反射在运行时检查类型和值;理解 Type、Value、Kind、可设置性和 nil 边界,才能安全编写动态代码。 进阶 3分钟 · 来自 reflect.Type 与 reflect.Value go 预测输出 新题 这段程序会输出什么? Go 反射在运行时检查类型和值;理解 Type、Value、Kind、可设置性和 nil 边界,才能安全编写动态代码。 进阶 3分钟 · 来自 reflect.Type 与 reflect.Value go 审查 AI 代码 新题 审查生成的设置修补器 Go 反射在运行时检查类型和值;理解 Type、Value、Kind、可设置性和 nil 边界,才能安全编写动态代码。 高级 12分钟 · 来自 reflect.Type 与 reflect.Value go 找出 bug 新题 找出 IsNil 辅助函数里的 bug Go 反射在运行时检查类型和值;理解 Type、Value、Kind、可设置性和 nil 边界,才能安全编写动态代码。 进阶 4分钟 · 来自 reflect.Type 与 reflect.Value go 测验 新题 对 [][]byte 使用 slices.Clone 会提供哪一层独立性? 切片是 Go 中处理连续元素的动态视图;理解长度、容量、底层数组与 append,才能避开共享内存带来的隐蔽错误。 进阶 1分钟 · 来自 切片 go 测验 新题 关于 var items []string 与 items := []string{},哪项说法正确? 切片是 Go 中处理连续元素的动态视图;理解长度、容量、底层数组与 append,才能避开共享内存带来的隐蔽错误。 入门 1分钟 · 来自 切片 go 预测输出 新题 这段程序会输出什么? 切片是 Go 中处理连续元素的动态视图;理解长度、容量、底层数组与 append,才能避开共享内存带来的隐蔽错误。 进阶 2分钟 · 来自 切片 go 审查 AI 代码 新题 审查生成的事件收集器 切片是 Go 中处理连续元素的动态视图;理解长度、容量、底层数组与 append,才能避开共享内存带来的隐蔽错误。 高级 6分钟 · 来自 切片 go 找出 bug 新题 找出 addTag 辅助函数里的 bug 切片是 Go 中处理连续元素的动态视图;理解长度、容量、底层数组与 append,才能避开共享内存带来的隐蔽错误。 进阶 4分钟 · 来自 切片 go 找出 bug 新题 找出预分配切片里的 bug 切片是 Go 中处理连续元素的动态视图;理解长度、容量、底层数组与 append,才能避开共享内存带来的隐蔽错误。 入门 4分钟 · 来自 切片 go 测验 新题 哪种结构体可以安全用作 map 键,并且不会发生运行时可比较性 panic? Go 结构体把相关字段组成值;理解零值、复制、可比较性、嵌入和标签,才能避开能编译却共享了错误状态的代码。 进阶 1分钟 · 来自 结构体 go 预测输出 新题 复制结构体后,这段程序会输出什么? Go 结构体把相关字段组成值;理解零值、复制、可比较性、嵌入和标签,才能避开能编译却共享了错误状态的代码。 入门 2分钟 · 来自 结构体 go 预测输出 新题 这段程序会输出什么? Go 结构体把相关字段组成值;理解零值、复制、可比较性、嵌入和标签,才能避开能编译却共享了错误状态的代码。 入门 2分钟 · 来自 结构体 go 审查 AI 代码 新题 审查生成的资料模型 Go 结构体把相关字段组成值;理解零值、复制、可比较性、嵌入和标签,才能避开能编译却共享了错误状态的代码。 高级 6分钟 · 来自 结构体 go 找出 bug 新题 找出 Activate 方法里的 bug Go 结构体把相关字段组成值;理解零值、复制、可比较性、嵌入和标签,才能避开能编译却共享了错误状态的代码。 入门 4分钟 · 来自 结构体 go 测验 新题 类型要满足约束 `interface { ~string; IsValid() bool }`,必须具备什么条件? 理解 Go 类型参数的声明、约束、类型集与推断规则,并处理命名类型、泛型方法和 comparable 的边界。 进阶 1分钟 · 来自 约束与类型集 go 预测输出 新题 这段程序会输出什么? 理解 Go 类型参数的声明、约束、类型集与推断规则,并处理命名类型、泛型方法和 comparable 的边界。 进阶 2分钟 · 来自 约束与类型集 go 审查 AI 代码 新题 审查泛型记录索引 理解 Go 类型参数的声明、约束、类型集与推断规则,并处理命名类型、泛型方法和 comparable 的边界。 高级 6分钟 · 来自 约束与类型集 go 找出 bug 新题 找出 any 约束里的 bug 理解 Go 类型参数的声明、约束、类型集与推断规则,并处理命名类型、泛型方法和 comparable 的边界。 入门 4分钟 · 来自 约束与类型集 go 找出 bug 新题 找出 Equal 调用里的 bug 理解 Go 类型参数的声明、约束、类型集与推断规则,并处理命名类型、泛型方法和 comparable 的边界。 高级 4分钟 · 来自 约束与类型集