reflect: implement PtrTo
Этот коммит содержится в:
родитель
36db75b366
коммит
3010466c55
2 изменённых файлов: 15 добавлений и 0 удалений
|
@ -133,6 +133,14 @@ func TypeOf(i interface{}) Type {
|
|||
return ValueOf(i).typecode
|
||||
}
|
||||
|
||||
func PtrTo(t Type) Type {
|
||||
ptrType := t<<5 | 5 // 0b0101 == 5
|
||||
if ptrType>>5 != t {
|
||||
panic("reflect: PtrTo type does not fit")
|
||||
}
|
||||
return ptrType
|
||||
}
|
||||
|
||||
func (t Type) String() string {
|
||||
return "T"
|
||||
}
|
||||
|
|
7
testdata/reflect.go
предоставленный
7
testdata/reflect.go
предоставленный
|
@ -265,6 +265,13 @@ func main() {
|
|||
println("type assertion failed (but should succeed)")
|
||||
}
|
||||
|
||||
if reflect.TypeOf(new(myint)) != reflect.PtrTo(reflect.TypeOf(myint(0))) {
|
||||
println("PtrTo failed for type myint")
|
||||
}
|
||||
if reflect.TypeOf(new(myslice)) != reflect.PtrTo(reflect.TypeOf(make(myslice, 0))) {
|
||||
println("PtrTo failed for type myslice")
|
||||
}
|
||||
|
||||
println("\nstruct tags")
|
||||
TestStructTag()
|
||||
}
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче