相关疑难解决方法(0)

无法将[]字符串转换为[] interface {}

我正在编写一些代码,我需要它来捕获参数并传递它们fmt.Println
(我希望它的默认行为,写入由空格分隔的参数,然后是换行符).但它需要[]interface {}flag.Args()返回一个[]string.
这是代码示例:

package main

import (
    "fmt"
    "flag"
)

func main() {
    flag.Parse()
    fmt.Println(flag.Args()...)
}
Run Code Online (Sandbox Code Playgroud)

这将返回以下错误:

./example.go:10: cannot use args (type []string) as type []interface {} in function argument
Run Code Online (Sandbox Code Playgroud)

这是一个错误吗?不应该fmt.Println采取任何阵列?顺便说一句,我也试过这样做:

var args = []interface{}(flag.Args())
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

cannot convert flag.Args() (type []string) to type []interface {}
Run Code Online (Sandbox Code Playgroud)

是否有"Go"方式解决此问题?

type-conversion go

81
推荐指数
3
解决办法
4万
查看次数

为什么[]字符串无法在golang中转换为[] interface {}

我发现它很奇怪,为什么[]字符串无法转换为[] interface {}?

我认为这应该是可能的,因为:

  1. 他们都是切片
  2. []字符串的每个元素都是字符串,当然是接口{}

但在下面的示例中,它将是编译错误

func f(args ...interface{}){

}
s := []string{"ssd", "rtt"}
f(s...)
Run Code Online (Sandbox Code Playgroud)

为什么语言无法自动完成转换?

types interface go

6
推荐指数
2
解决办法
1163
查看次数

如何对Go的切片进行排序,其元素类型是字符串的别名,而不是字符串本身?

type MyObject string
var objects []MyObject
Run Code Online (Sandbox Code Playgroud)

我想对这些对象进行排序.标准库有sort.Strings,但需要一个实例[]string而不是[]MyObject.

我目前的解决方案是实现sort.Interface(如下所示)并使用sort.Sort,但我想摆脱那个样板代码.有更好的方法吗?

type MyObjects []MyObject

func (objs MyObjects) Len() int {
    return len(objs)
}

func (objs MyObjects) Less(i, j int) bool {
    return strings.Compare(string(objs[i]), string(objs[j])) < 0
}

func (objs MyObjects) Swap(i, j int) {
    o := objs[i]
    objs[i] = objs[j]
    objs[j] = o
}
Run Code Online (Sandbox Code Playgroud)

sorting types go

3
推荐指数
1
解决办法
207
查看次数

标签 统计

go ×3

types ×2

interface ×1

sorting ×1

type-conversion ×1