我是新来的。我有一个接受输入的函数[]string
,但我必须传递的输入是[]*string
,我如何转换[]*string
为[]string
. 有没有办法使用任何实用程序来转换它,或者我是否必须使用 for 循环迭代它并构造一个数组?
游乐场链接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!")
}
Run Code Online (Sandbox Code Playgroud)
您accept(param []string)
期望一片字符串。
var a [1]*string
这声明了长度为 的 Go 数组1
。所以它不是一个切片。
您可以使用它声明一个空的字符串指针切片。var a []*string
您必须迭代数组并使用指针元素的值创建一个切片,然后使用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
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2120 次 |
最近记录: |