登录
首页 >  Golang >  Go问答

如何使用GoLang中的嵌套结构定义创建对象?

来源:stackoverflow

时间:2024-02-21 14:54:23 109浏览 收藏

你在学习Golang相关的知识吗?本文《如何使用GoLang中的嵌套结构定义创建对象?》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

有没有办法从嵌套结构类型创建对象

func main() {
    car := Car{}
    var wheel Car.Wheel
}

type Car struct {
    Wheel struct {
        name string
    }
}

我有一个深层嵌套的 json。我有兴趣分别对许多嵌套结构进行操作。 我想通过“root”定义访问结构定义。像 car.wheel 这样的东西,而不是为 json 中的许多嵌套对象显式定义 type wheel struct


正确答案


有没有办法从嵌套结构类型创建对象

不,因为不存在“嵌套结构类型”这样的东西。您没有类型 car.wheel,您有类型 car,其中包含字段 wheel;该字段的类型是未命名类型 struct { name string }。您不能引用未命名的类型;它是未命名的。要引用一个类型,您必须为其命名。你可以这样做:

var wheel struct { name string }

您可以在 wheelcar.wheel 之间进行分配,因为它们是相同的类型;但是,这并不是特别方便(您必须在使用它的任何地方写出完整的类型定义),并且这意味着您无法在该类型上定义任何方法,这可能是也可能不是您关心的限制.

一般来说,在 go 中,您只想为要使用的每种类型定义一个命名类型,并且这些定义都位于顶层:

type car struct {
    wheel wheel
}

type wheel struct {
    name string
}

您是否正在寻找这样的东西:

package main

import "fmt"

type Car struct {
    model string
    wheel Wheel
}

type Wheel struct {
    name string
}

func main() {
    car := Car{model: "Toyota"}
    car.wheel.name = "my wheel"

    fmt.Println("car model: ", car.model)
    fmt.Println("car wheel name:", car.wheel.name)
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>