要获取结构体中某个字段的类型,并以该类型重写定义一个新类型,可以使用反射来实现。

首先,我们需要导入 "reflect" 包。

然后,假设我们有一个结构体类型为 Person,其中有一个字段 Name,我们要获取它的类型并重写定义一个新类型 NameType

package main

import (
	"fmt"
	"reflect"
)

type Person struct {
	Name string
	Age  int
}

func main() {
	p := Person{
		Name: "John",
		Age:  30,
	}

	t := reflect.TypeOf(p) // 获取结构体类型

	// 获取字段的类型
	field, _ := t.FieldByName("Name")
	fieldType := field.Type

	// 以字段类型重写定义一个新类型
	type NameType = string

	// 创建一个新变量并赋值
	name := p.Name
	var nameType NameType = NameType(name)

	// 打印新类型的值和类型
	fmt.Printf("%v, %T\n", nameType, nameType)
}

输出结果:

John, main.NameType

在上面的代码中,我们使用 reflect.TypeOf(p) 获取结构体 Person 的类型。然后,使用 FieldByName 方法获取字段 Name 的类型。最后,我们以该类型重写定义一个新类型 NameType,并创建一个新变量 nameType 来存储 p.Name 的值,并且将其类型转换为 NameType

最后,我们打印新类型的值和类型,可以看到输出结果为 John, main.NameType

golang 获取sturct 中某个字段的类型并以该类型重写定义一个类型

原文地址: http://www.cveoy.top/t/topic/iYML 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录