mirror of
https://github.com/golang/go
synced 2024-11-20 08:04:42 -07:00
reflect: add a secret method to ArrayOrSliceType.
It was observed that the interface was generic enough that several other types implemented it too. Fixes #1530. R=rsc CC=golang-dev https://golang.org/cl/4169063
This commit is contained in:
parent
1e73fed888
commit
795ff00df0
@ -163,6 +163,10 @@ type SliceType struct {
|
||||
elem *runtime.Type
|
||||
}
|
||||
|
||||
// arrayOrSliceType is an unexported method that guarantees only
|
||||
// arrays and slices implement ArrayOrSliceType.
|
||||
func (*SliceType) arrayOrSliceType() {}
|
||||
|
||||
// Struct field
|
||||
type structField struct {
|
||||
name *string
|
||||
@ -397,6 +401,10 @@ func (t *ArrayType) Len() int { return int(t.len) }
|
||||
// Elem returns the type of the array's elements.
|
||||
func (t *ArrayType) Elem() Type { return toType(*t.elem) }
|
||||
|
||||
// arrayOrSliceType is an unexported method that guarantees only
|
||||
// arrays and slices implement ArrayOrSliceType.
|
||||
func (*ArrayType) arrayOrSliceType() {}
|
||||
|
||||
// Dir returns the channel direction.
|
||||
func (t *ChanType) Dir() ChanDir { return ChanDir(t.dir) }
|
||||
|
||||
@ -675,6 +683,7 @@ func toType(i interface{}) Type {
|
||||
type ArrayOrSliceType interface {
|
||||
Type
|
||||
Elem() Type
|
||||
arrayOrSliceType() // Guarantees only Array and Slice implement this interface.
|
||||
}
|
||||
|
||||
// Typeof returns the reflection Type of the value in the interface{}.
|
||||
|
Loading…
Reference in New Issue
Block a user