练习 / 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分钟 · 来自约束与类型集