英文:
func with params of not fixed type
问题
在Go语言中是否可能实现以下功能:
func funcWithDynamicTypeArgs(param interface{}) {
}
我希望param
可以是int
、string
、map
或任何类型。换句话说,在Go语言中是否可以声明和使用具有动态类型参数的函数?
英文:
Is it possible in GoLang
:
func funcWithDynamicTypeArgs(param notFixedType)
{
}
I want param
let be int
and string
and map
and any type.
In other words: is it possible in Go
to declare and use function
with dynamic type arguments?
答案1
得分: 2
例如,
func 函数名(参数 interface{}) {
}
> Go编程语言规范
>
> 接口类型
>
> 所有类型都实现了空接口:
>
> interface{}
>
> 类型断言
>
> 对于一个接口类型的表达式 x 和一个类型 T,主表达式
>
> x.(T)
>
> 断言 x 不是 nil,并且 x 中存储的值是类型 T。x.(T) 的表示法称为类型断言。
参见 fmt 包,它使用 reflect 包 处理任意类型的参数。例如,
> func Print
>
> func Print(a ...interface{}) (n int, err error)
>
> Print 使用其操作数的默认格式进行格式化,并写入标准输出。当两个操作数都不是字符串时,它们之间会添加空格。它返回写入的字节数和任何遇到的写入错误。
英文:
For example,
func function(param interface{}) {
}
> The Go Programming Language Specification
>
> Interface types
>
> All types implement the empty interface:
>
> interface{}
>
> Type assertions
>
> For an expression x of interface type and a type T, the primary
> expression
>
> x.(T)
>
> asserts that x is not nil and that the value stored in x is of type T.
> The notation x.(T) is called a type assertion.
See package fmt which uses package reflect to handle arguments of any type. For example,
> func Print
>
> func Print(a ...interface{}) (n int, err error)
>
> Print formats using the default formats for its operands and writes to
> standard output. Spaces are added between operands when neither is a
> string. It returns the number of bytes written and any write error
> encountered.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论