繁体   English   中英

编写一个返回Golang接口切片的函数

[英]Write a function that returns a slice of interfaces in Golang

在Golang中, Scanner接口使用单个dest参数,该参数可以是任意数量的interface{}

// Scan copies the columns in the current row into the values pointed at by dest.
func (rs *Rows) Scan(dest ...interface{}) error

是否有一个替代函数可以返回一部分接口作为其结果? 假设我想将dest参数放在函数中,所以我不必每次都写出来。

func scanArgs() []interface{} {

}

func main() {
    db.QueryRow("SELECT * FROM users").Scan(scanArgs()...)
}

我已经尝试过了,但是方法签名出现了问题。 我可以将[]interface设置为返回值,但不能轻易在函数内部创建接口。 有一个更好的方法吗?

您可以使用以下语法轻松地在函数内部进行分配:

package main

import "fmt"

func main() {
        objs := &[]interface{}{} 
        objs2 := make([]interface{}, 10)
        objs3 := []interface{}{}
    fmt.Println(len(*objs))
    fmt.Println(len(objs2))
    fmt.Println(len(objs3))
}

由于所有内容都实现了空接口,因此您可以使用append将任何类型添加到这些集合中。 init语法有点笨拙,可能会把您扔掉……看起来像这样的原因是因为当您通常使用实际的接口名称,例如[]io.Writer{}时,我在那里声明了type interface{} []io.Writer{} 相反,您需要那些提取的卷发。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM