可以通过使用反射来实现这个功能。具体步骤如下: 1. 通过输入的结构体名获取该结构体的类型信息: ```go typeInfo := reflect.TypeOf(structName{}) ``` 2. 获取该结构体对应的文件路径: ```go filePath := typeInfo.PkgPath() ``` 3. 使用该路径加载对应的文件: ```go file, err := os.Open(filePath) if err != nil { // 处理文件打开错误 } defer file.Close() ``` 4. 将文件中的数据读取到对应的结构体实例中: ```go structInstance := reflect.New(typeInfo).Interface() decoder := json.NewDecoder(file) err = decoder.Decode(structInstance) if err != nil { // 处理json解码错误 } ``` 5. 将结构体实例断言为对应的结构体类型: ```go resultStruct, ok := structInstance.(structName) if !ok { // 处理类型断言失败 } ``` 完整代码示例: ```go package main import ( "encoding/json" "fmt" "os" "reflect" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { // 输入的结构体名 structName := "Person" // 获取结构体类型信息 typeInfo := reflect.TypeOf(Person{}) // 获取结构体对应的文件路径 filePath := typeInfo.PkgPath() // 加载文件 file, err := os.Open(filePath) if err != nil { fmt.Println(err) return } defer file.Close() // 将文件中的数据读取到结构体实例中 structInstance := reflect.New(typeInfo).Interface() decoder := json.NewDecoder(file) err = decoder.Decode(structInstance) if err != nil { fmt.Println(err) return } // 将结构体实例断言为对应的结构体类型 resultStruct, ok := structInstance.(Person) if !ok { fmt.Println("类型断言失败") return } fmt.Printf("Name: %s, Age: %d\n", resultStruct.Name, resultStruct.Age) } ```