我是新来的。
我有一个接受 []string
作为输入的函数,但是我必须传递的输入是 []*string
,我该如何转换 [] *string
到 []string
。
有什么方法可以使用任何实用程序对其进行转换,还是我必须使用 for 循环对其进行迭代并构造一个数组?
Playground 链接 https://play.golang.org/p/_s2g7-IfGAy
package main
import (
"fmt"
)
func main() {
//Declaring an array of []*string and assigning value to it
var a [1]*string
var strPointer = new(string)
*strPointer = "1"
a[0] = strPointer
fmt.Println(*a[0])
// accept(a) this wont work
//Converting to array []string
var b []string
for i := range a {
b = append(b, *a[i])
}
accept(b)// this works
fmt.Println(b)
}
func accept(param []string) {
fmt.Println("Works!")
}
最佳答案
您的 accept(param []string)
需要一段字符串。
var a [1]*string
这声明了长度为 1
的 Go 数组。所以它不是 slice 。
您可以使用它来声明一个空的字符串指针片段。 var a []*string
并且您必须遍历数组并使用指针元素的值创建一个 slice ,然后使用该 slice 调用 accept
。
将 []*string 转换为 []string 的示例函数
func stringer(str []*string) []string{
var strs []string
for _, s := range str {
if s == nil {
strs = append(strs, "")
continue
}
strs = append(strs, *s)
}
return strs
}
关于go - 在 golang 中将 []*string 转换为 []string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69105260/