gpt4 book ai didi

go - 在 Go 中,将字符串类型数组转换为字符串数组的最佳方法是什么

转载 作者:IT王子 更新时间:2023-10-29 02:05:35 33 4
gpt4 key购买 nike

下面的代码

package main

import "strings"
import "fmt"

type Foo string

const (
Bar Foo = "bar"
Snafu = "snafu"
Foobar = "foobar"
)

var Foos = []Foo{Bar, Snafu, Foobar}

func main() {
fmt.Println("Foos: " + strings.Join(Foos, ","))
}

产生这个错误:

./test.go:17: cannot use Foos (type []Foo) as type []string in argument to strings.Join

这是有道理的,因为 Foo 不是字符串,而是从字符串派生的。有没有办法在不复制的情况下将“[]Foo”强制转换为“[]string”?

最佳答案

几乎最好也是唯一的方法是循环遍历 Foo 对象的 slice ,如(导致复制):

func main() {
results := make([]string, 0, len(Foos))
for _, r := range Foos{
results = append(results, string(r))
}
fmt.Println("Foos: " + strings.Join(results, ","))
}

不幸的是,此时 Go 不支持概念类型强制转换,需要一个副本。作为替代方案,您可以键入 alias []Foo 并向其添加 Stringer 方法,从而封装此类详细信息,如:http://play.golang.org/p/FuOoLNrCvD

有关类似问题,请参阅以下内容:Cannot convert []string to []interface {}

关于go - 在 Go 中,将字符串类型数组转换为字符串数组的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28030469/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com