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

标签 go

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

关于go - 在 golang 中将 []*string 转换为 []string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69105260/

相关文章:

plugins - 无法在 Intellij IDE 中选择 golang sdk

go - 如何使用 gorm 为表编写注释?

go - 在 Go 中实现测试模拟的首选方法是什么?

go - NaN 是 golang 中的可比较类型吗?

firebase - 无法在返回值中使用类型的变量

golang windows服务包初始化设置

go - Go(WebAssembly)中的malloc()和free()

go - 如何查看在 "go get"安装中失败的内部编译命令?

go - 如何在 GO 中将包含斜杠的 url 作为路径参数传递?

Golang exec.Command - 对话框