GO语言中不支持传统意义上的继承,它不提供继承关系的概念。相反,GO语言通过组合和接口来实现类似于继承的特性。

GO语言中结构体可以通过组合来实现"继承"。假设我们有一个`Animal`结构体包含一些公共字段和方法,另外一个`Cat`结构体,可以通过嵌入`Animal`结构体来继承它的字段和方法。例如:

```
type Animal struct {
name string
age int
}

func (a *Animal) Say() {
fmt.Println("I'm an animal.")
}

type Cat struct {
Animal // 嵌入Animal结构体
color string
}

func (c *Cat) Say() {
fmt.Println("I'm a cat.")
}
```

在上述代码中,`Cat`结构体嵌入了`Animal`结构体,所以`Cat`结构体中就包含了`Animal`结构体的`name`和`age`字段和`Say()`方法。同时,`Cat`结构体还定义了自己的`color`字段和`Say()`方法,当调用`Cat`结构体的`Say()`方法时,会优先调用`Cat`结构体中的该方法。

除了组合,GO语言还提供了接口来实现多态特性。通过定义接口,我们可以将不同的类型进行抽象,只暴露出它们共有的方法,从而实现多种类型能够统一对待的目的。例如:

```
type Sayer interface {
Say()
}

func LetAnimalsSay(s Sayer) {
s.Say()
}

func main() {
a := &Animal{}
c := &Cat{}

LetAnimalsSay(a)
LetAnimalsSay(c)
}
```

在上述代码中,我们定义了一个`Sayer`接口,它只有一个`Say()`方法。然后,我们定义了一个`LetAnimalsSay()`函数来接受实现了该接口的类型,并调用其`Say()`方法。我们可以将`Animal`和`Cat`类型传递给`LetAnimalsSay()`函数,因为它们都实现了`Sayer`接口。

综上,虽然GO语言不提供传统意义上的继承关系,但是通过组合和接口,可以很好地实现继承的特性。
`a := &Animal{}` 创建了一个`Animal`结构体的指针,并将其赋值给变量`a`。这里使用了取地址符`&`,表示将结构体的指针地址赋值给`a`,也就是将`a`指向新创建的`Animal`结构体。同时,使用了结构体字面量语法,将`name`和`age`字段都初始化为零值。

这个写法等价于:

```
a := new(Animal)
```

使用`new()`函数创建一个新的`Animal`结构体,并返回其指针地址。两种写法的效果是一样的。