go - 在 golang 中将 []*string 转换为 []string

我是新来的。 我有一个接受 []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
}

run here

https://stackoverflow.com/questions/69105260/

相关文章:

visual-studio-code - 如何在 VS Code 中按字母顺序排列纯文本列表?

c++ - 如何区分ascii值和数字?

snowflake-cloud-data-platform - 使用 Google 作为身份提供商

python - subprocess.call() 和 os.system() 之间的速度差异

python - 根据列表字典python的输入获取名称

git - 如何创建自定义 git/bash 脚本?

javascript - JS : proper way of using optional cha

c# - 如何按值列表分组,然后计算每个值的条目数量

Go - 如何子类型化包装错误类?

amazon-web-services - 带有自定义 SAML 应用程序的 AWS SSO 'no