在 Golang 中将字符串解组为类似结构的结构
Unmarshaling string to struct like structure in Golang
我在下面用 Golang 得到了一个字符串:
var cars = [
{
model: "SLR",
brand: "Mercedes",
prices: [520, 730],
},
{
model: "M4",
brand: "BMW",
prices: [420, 820],
}
]
我知道这不是 JSON 字符串。
有什么办法可以“解组”字符串并获取每辆车的型号吗?
我怎样才能得到每辆车的型号?
或者这首先是一个错误的问题?我很欣赏你的意见。
您可能有幸使用 yaml 作为输入:
package main
import (
"fmt"
"gopkg.in/yaml.v2"
)
func main() {
const cars = `[ { model: "SLR", brand: "Mercedes", prices: [520, 730], }, { model: "M4", brand: "BMW", prices: [420, 820], } ]`
type Car struct {
Model string `yaml:"model"`
Brand string `yaml:"brand"`
Prices []int `yaml:"prices"`
}
var carsArr []Car
if err := yaml.Unmarshal([]byte(cars), &carsArr); err != nil {
panic(err)
}
fmt.Printf("Cars: %+v", carsArr)
// Cars: [{Model:SLR Brand:Mercedes Prices:[520 730]} {Model:M4 Brand:BMW Prices:[420 820]}]
}
要解组您的输入并检索每辆车的型号,您必须使用 umarshal 方法,然后使用 range
方法,我已按如下方式重现您的场景:
package main
import (
"fmt"
"gopkg.in/yaml.v2"
)
type Car struct {
Model string `yaml:"model"`
Brand string `yaml:"brand"`
Prices []int `yaml:"prices"`
}
func main() {
var car = []byte(`[ { model: "SLR", brand: "Mercedes", prices: [520, 730], }, { model: "M4", brand: "BMW", prices: [420, 820], } ]`)
var cars []Car
if err := yaml.Unmarshal(car, &cars); err != nil {
panic(err)
}
for _, v := range cars {
fmt.Println(v.Model)
}
}
输出:
SLR
M4
我在下面用 Golang 得到了一个字符串:
var cars = [
{
model: "SLR",
brand: "Mercedes",
prices: [520, 730],
},
{
model: "M4",
brand: "BMW",
prices: [420, 820],
}
]
我知道这不是 JSON 字符串。 有什么办法可以“解组”字符串并获取每辆车的型号吗? 我怎样才能得到每辆车的型号? 或者这首先是一个错误的问题?我很欣赏你的意见。
您可能有幸使用 yaml 作为输入:
package main
import (
"fmt"
"gopkg.in/yaml.v2"
)
func main() {
const cars = `[ { model: "SLR", brand: "Mercedes", prices: [520, 730], }, { model: "M4", brand: "BMW", prices: [420, 820], } ]`
type Car struct {
Model string `yaml:"model"`
Brand string `yaml:"brand"`
Prices []int `yaml:"prices"`
}
var carsArr []Car
if err := yaml.Unmarshal([]byte(cars), &carsArr); err != nil {
panic(err)
}
fmt.Printf("Cars: %+v", carsArr)
// Cars: [{Model:SLR Brand:Mercedes Prices:[520 730]} {Model:M4 Brand:BMW Prices:[420 820]}]
}
要解组您的输入并检索每辆车的型号,您必须使用 umarshal 方法,然后使用 range
方法,我已按如下方式重现您的场景:
package main
import (
"fmt"
"gopkg.in/yaml.v2"
)
type Car struct {
Model string `yaml:"model"`
Brand string `yaml:"brand"`
Prices []int `yaml:"prices"`
}
func main() {
var car = []byte(`[ { model: "SLR", brand: "Mercedes", prices: [520, 730], }, { model: "M4", brand: "BMW", prices: [420, 820], } ]`)
var cars []Car
if err := yaml.Unmarshal(car, &cars); err != nil {
panic(err)
}
for _, v := range cars {
fmt.Println(v.Model)
}
}
输出:
SLR
M4