Go语言:如何遍历切片前N个元素并输出申请者姓名?
问题解决:输出前N位申请者姓名
你的代码存在两个核心问题:
- 输出姓名时重复调用了
applicant.secondName,导致打印的是两次姓氏,正确逻辑应该拼接名字(firstName)和姓氏(secondName) - 没有限制遍历范围,会输出所有申请者,而非仅前3位GPA最高的
修正后的代码
// 定义要输出的前N位,此处N=3 n := 3 // 处理申请者数量不足N的情况,避免索引越界 if len(applicants) < n { n = len(applicants) } // 仅遍历前N位申请者 for i := 0; i < n; i++ { applicant := applicants[i] fmt.Println(applicant.firstName + " " + applicant.secondName) }
更简洁的实现方式
如果想用range遍历,可以通过切片截断直接获取前N位数据,同时利用fmt.Println的参数特性简化字符串拼接:
n := 3 if len(applicants) < n { n = len(applicants) } for _, applicant := range applicants[:n] { fmt.Println(applicant.firstName, applicant.secondName) }
内容的提问来源于stack exchange,提问作者worrum
相关产品推荐
相关产品推荐

