MST

星途 面试题库

面试题:Go语言标签与跳转让函数执行流程变更的复杂应用

编写一个Go函数,该函数接收一个字符串切片作为参数,在函数内部使用标签与跳转语句实现:当某个字符串长度大于10时,跳转到函数末尾,并返回该字符串。同时,在函数中需要展示至少3种不同的标签与跳转组合方式,并且要处理可能出现的边界情况,例如切片为空。
48.6万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
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)
}

在这个代码中:

  1. 首先检查切片是否为空,如果为空则直接返回空字符串,处理了边界情况。
  2. 使用goto语句跳转到函数末尾的标签end,当找到长度大于10的字符串时执行。
  3. 使用break标签跳出外层循环,当找到长度大于10的字符串时执行。
  4. 使用continue标签跳过长度不大于10的字符串,当找到长度大于10的字符串时返回。