代码如下:
```go
package main
import (
"reflect"
"fmt"
)
type Student struct {
age int
name string
}
func getSliceStructName(i interface{}) string {
// 这里我想获取数组里面的结构体类型名
s := reflect.TypeOf(i).String()
return s
}
func main() {
stuArr := []Student{}
s := getSliceStructName(&stuArr)
fmt.Print(s)
// 期望返回字符串: Student
// 结果返回字符串:*[]main.Student
}
```
可以简单的理解,传参有取地址符,传参本身是数组结构体,类似C的指针的指针,Elem()就类似指针指向的内容, Elem().Elem()就是Student结构体了。
#4
更多评论
由于传入的参数加了取地址符,所以将s := reflect.TypeOf(i).String()改成s := reflect.TypeOf(i).Elem().Elem().Name()
#2