Golang中无法将字符串类型作为[]string类型在字段值中使用

Golang中无法将字符串类型作为[]string类型在字段值中使用 大家好,

我正在尝试为一个嵌入了包含 []string 的结构体字段赋值,但一直没有成功。

https://play.golang.org/p/H3TFxcmAaAY

任何帮助都将不胜感激。

谢谢

5 回复

谢谢

更多关于Golang中无法将字符串类型作为[]string类型在字段值中使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


因为这就是你指定字面量切片的方式。

“只需”使用 []string{} 字面量:

https://play.golang.org/p/tDNu6gNoRSm

添加了一个 println 来修复未使用变量的错误。

这方法有效。谢谢。但为什么它能工作呢? 我至少阅读了15篇JSON教程,但从未遇到过这种模式:[]string{"randomString"}。为什么使用大括号 {}?这表示什么?这是访问结构体中嵌入字段的方式吗?

干杯

在Go语言中,直接给 []string 类型的字段赋值字符串字面量是不允许的,因为类型不匹配。字符串字面量是 string 类型,而字段期望的是 []string 类型(字符串切片)。你需要将字符串转换为包含单个元素的字符串切片。

以下是修正后的代码示例:

package main

import (
	"fmt"
)

type Person struct {
	Name    string
	Hobbies []string
}

func main() {
	p := Person{
		Name:    "John",
		Hobbies: []string{"reading"}, // 使用 []string{"reading"} 而不是 "reading"
	}
	fmt.Println(p)
}

如果你需要从多个字符串字面量初始化切片,可以这样做:

p := Person{
	Name:    "John",
	Hobbies: []string{"reading", "coding", "hiking"},
}

如果 Hobbies 字段可能为空,你可以直接赋值为 nil 或一个空的切片:

p := Person{
	Name:    "John",
	Hobbies: nil, // 或 []string{}
}

这样就能正确地将字符串值赋值给 []string 类型的字段了。

回到顶部