Go中扩展类型的访问方法

The follow codes produces "prog.go:17: c.Test undefined (type Child has no field or method Test)". (http://play.golang.org/p/g3InujEX9W)

package main

import "fmt"

type Base struct {
    X int
}

func (b Base) Test() int {
    return b.X
}

type Child Base

func main() {
    c := Child{4}
    fmt.Println(c.Test())
}

I realize Test is technically defined on Base, but should Child inherit that method?

the way to go for inheritance in go is using struct embedding with anonymous struct members. Here is an adaption of your example.

Read about struct embedding and go's approach to inheritance etc here

The behaviour you encountered is expected and in sync with the golang specification, which explicitly states that:

The method set of any type T consists of all methods with receiver type T. The method set of the corresponding pointer type *T is the set of all methods with receiver *T or T (that is, it also contains the method set of T). Further rules apply to structs containing anonymous fields, as described in the section on struct types. Any other type has an empty method set.