具有不固定类型参数的函数

huangapple go评论79阅读模式
英文:

func with params of not fixed type

问题

在Go语言中是否可能实现以下功能:

func funcWithDynamicTypeArgs(param interface{}) {

}

我希望param可以是intstringmap或任何类型。换句话说,在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.

huangapple
  • 本文由 发表于 2014年11月10日 10:48:53
  • 转载请务必保留本文链接:https://go.coder-hub.com/26835981.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定