func typeOf(goType reflect.Type) *Type {
	rm := &Type{
		method: make(map[string]*RootMethod),
	}
	for i := 0; i < goType.NumMethod(); i++ {
		m := goType.Method(i)
		if m.PkgPath != "" || isKillMethod(m) {
			// The Kill method gets a special exception because
			// it fulfils the Killer interface which we're expecting,
			// so it's not really discarded as such.
			continue
		}
		if o := newRootMethod(m); o != nil {
			rm.method[m.Name] = o
		} else {
			rm.discarded = append(rm.discarded, m.Name)
		}
	}
	return rm
}
// typeOf is like TypeOf but without the cache - it
// always allocates. Called with rootTypeMutex locked.
typeOf is like TypeOf but without the cache - it
always allocates. Called with rootTypeMutex locked.
// typeOf is like TypeOf but without the cache - it // always allocates . Called with rootTypeMutex locked .
func typeOf(goType reflect.Type) *Type {
	rm := &Type{
		method: make(map[string]*RootMethod),
	}
	for i := 0; i < goType.NumMethod(); i++ {
		m := goType.Method(i)
		if m.PkgPath != "" || isKillMethod(m) {
			continue
		}
		if o := newRootMethod(m); o != nil {
			rm.method[m.Name] = o
		} else {
			rm.discarded = append(rm.discarded, m.Name)
		}
	}
	return rm
}
func typeOf ( goType reflect . Type ) * Type { rm := & Type { method : make ( map [ string ] * RootMethod ) , } for i := 0 ; i < goType . NumMethod ( ) ; i ++ { m := goType . Method ( i ) if m . PkgPath != " " || isKillMethod ( m ) { continue } if o := newRootMethod ( m ) ; o != nil { rm . method [ m . Name ] = o } else { rm . discarded = append ( rm . discarded , m . Name ) } } return rm }
typeOf is like TypeOf but without the cache - it
always allocates.
typeOf is like TypeOf but without the cache - it always allocates .
// The Kill method gets a special exception because // it fulfils the Killer interface which we're expecting, // so it's not really discarded as such.