github.com/nyan233/littlerpc@v0.4.6-0.20230316182519-0c8d5c48abaf/internal/reflect/pointer.go (about) 1 package reflect 2 3 import ( 4 "reflect" 5 "unsafe" 6 ) 7 8 // 关于一些指针的工具函数 9 10 const PtrSize = unsafe.Sizeof(0) 11 12 // PtrDeriveValue 根据ptrI提供的type,val提供的data派生一个eface 13 // 不会修改ptrI中的数据,因为只使用了reflect.TypeOf()获取type的指针 14 // 并没有使用ptrI中对应的efce的data的指针 15 func PtrDeriveValue(ptrI interface{}, val interface{}) interface{} { 16 // NoNew不会重新分配eface-data的结构内存 17 return typeToEfaceNoNew(reflect.TypeOf(ptrI), val) 18 }