创建包含另一个结构

时间:2017-05-16 15:42:50

标签: go struct

如何使用另一个结构的字段

创建结构
struct box {
    x int
    y int
}

struct textbox {
    BOXVALUES
    text string
}

3 个答案:

答案 0 :(得分:3)

Go没有像Java这样的继承概念,你可以说文本框是box的子项,因此继承了它的字段。

所以你可以这样做:     type box struct {       x int       y int     }

type textbox struct {
  box
  text string
}

通过指定不带结构字段名称的类型box,您可以复制box struct int textbox中定义的字段。但是,在构建过程中,您仍然必须将box字段明确初始化为:

t := textbox {
  box: box{
    x: 1,
    y: 2,
  },
  text: "aoeu",
}

但是,您不再需要在box中引用textbox进行访问,例如:

println(t.x)

Go在这方面有点奇怪,因为struct不是一个对象,所以textbox实际上并不从box继承,而是将其复制到其中,并附带一些语法糖用于访问

答案 1 :(得分:2)

我们至少有两种方式:

案例1:名为Embed

struct textbox {
    box
    text string
}

案例2:包含子结构

struct textbox {
    boxValue box
    text string
}

但我认为你应该学习基础课。这是一个基本概念。

答案 2 :(得分:-1)

不熟悉GO ......但考虑到你想要的语法

struct textbox
{
    BOXVALUES box
    text string
}

根据你给出的语法,结构应该由

组成
fieldname DataType

在Textbox的示例中,您缺少DataType ...如int,string,float等。您的box结构基本上是一个新的DataType,因此您可以使用它来代替DataType的位置。