面试题答案
一键面试package main
import (
"fmt"
)
func findLongString(strs []string) string {
if len(strs) == 0 {
return ""
}
// 方式一:使用goto和标签
outer:
for _, str := range strs {
if len(str) > 10 {
goto end
}
}
// 方式二:使用break标签
var result string
outerBreak:
for _, str := range strs {
if len(str) > 10 {
result = str
break outerBreak
}
}
if result != "" {
return result
}
// 方式三:使用continue标签
for _, str := range strs {
if len(str) <= 10 {
continue
}
return str
}
end:
for _, str := range strs {
if len(str) > 10 {
return str
}
}
return ""
}
你可以使用以下方式调用这个函数:
func main() {
strs := []string{"hello", "worldlongstring", "test"}
result := findLongString(strs)
fmt.Println(result)
}
在这个代码中:
- 首先检查切片是否为空,如果为空则直接返回空字符串,处理了边界情况。
- 使用
goto
语句跳转到函数末尾的标签end
,当找到长度大于10的字符串时执行。 - 使用
break
标签跳出外层循环,当找到长度大于10的字符串时执行。 - 使用
continue
标签跳过长度不大于10的字符串,当找到长度大于10的字符串时返回。