当前位置: 首页 > 面试题库 >

您如何使一个函数接受多种类型?

鞠边浩
2023-03-14
问题内容

我有这样的功能:

package main
import "flag"
import "fmt"

func print_out_type(x anything) string {
    switch v := x.(type) {
        case string:
             return "A string"
        case int32:
             return "An Integer"
        default:
             return "A default"
    }
}

func main() {
    wordPtr := flag.String("argument1", "foo", "a String")
    numPtr := flag.Int("argument2", 42, "an Integer")
    flag.Parse()
    fmt.Println("word: ", *wordPtr)
    fmt.Println("number: ", *numPtr)
}

我试图根据类型返回不同类型的字符串。我只是停留在如何编写一个接受不同类型参数的函数上。


问题答案:

您可以将接口类型用作参数,在这种情况下,可以使用实现给定接口的任何类型来调用函数。在Go类型中,如果类型具有接口的方法,则它们会自动实现任何接口。因此,如果您想接受所有可能的类型,则可以使用空接口(interface{}),因为所有类型都可以实现该接口。无需对您的功能进行其他修改。

func print_out_type(x interface{}) string {
    switch v := x.(type) {
        case string:
             return "A string"
        case int32:
             return "An Integer"
        default:
             return "A default"
    }
}

您还可以使用反射包来研究接口变量的类型。例如:

func print_out_type(x interface{}) string {
    return reflect.TypeOf(x).String()
}

func main() {
    fmt.Println(print_out_type(42))
    fmt.Println(print_out_type("foo"))
}

将打印

整型



 类似资料:
  • 问题内容: 我想知道,如果有人能告诉我,范围函数如何采用:单个参数,或或。它是否使用一个参数来收集参数,然后使用一系列if语句根据所提供的参数数量来分配正确的值?从本质上说,它规定,如果有一个参数,然后将其设置成停止争论,或者如果有两个那么他们,和,或者如果有三个然后设置这些作为,和分别?我想知道如果要用纯Cpython编写范围怎么办。谢谢!!! 更新 :当我最初问这个问题时,我并没有澄清我想知道

  • 考虑一个用例,我有一个类似 现在我怎么能有 2 种不同类型的案例 用例-1 我如何接受swagger中的类形式的上述查询参数,我知道我们可以在swagger中将其定义为不同的单独参数,如下所示 但是使用这个swagger创建了一个带有字符串或整数参数的rest方法,拥有这么多的多个参数可能不是一个好主意,所以我强烈希望它创建一个如下所示的类,而我的rest是用这个类对象生成的。我如何将这个类应用到

  • 问题内容: 我想制作这种形式的通用类: 问题是,我希望T可以是整数或Long,但不能接受Double。因此,仅有的两个可接受的声明将是: 有什么办法吗? 问题答案: 答案是不。至少没有办法使用泛型类型做到这一点。我建议结合使用泛型和工厂方法来执行您想要的操作。 这样可以确保只能创建和实例。尽管您仍然可以声明类型的变量,但它必须为null。

  • 我对所有方法都有一个异常处理的要求,假设我有一个项目,并且在项目内,抛出了StaleStateException,我需要处理它,我想这样做: 我如何实现这个方法?

  • 我希望我的上载程序只允许这些类型: 文档,文档。 xls,xlsx。 ppt,pptx。 txt. pdf. 图像类型。 我怎样才能做到这一点呢?我应该在属性中放入什么?谢谢你的帮助。 编辑!!! 我还有一件事要问。当弹出窗口出现用于选择文件时,在右下角,有一个包含所有允许文件的下拉列表。在我的情况下,名单会很长。我在列表中看到,有一个名为的选项。我如何使它默认选择并消除所有其他选项? 任何帮助都

  • 我正在开发一个数独小程序,我想制作它的单元格(扩展JTextField),以便它只接受0-9和长度为1之间的整数。稍后我会对它进行更多限制(以便它符合游戏规则)。我从: 在这里,我试图过滤输入,对于开始,我只是试图将其限制为整数和一个数字,但似乎我可以输入任意多的数字,而最后一行不会被触发。 想在这里得到一些帮助,谢谢: