syntaxgo_reflect

package
v0.0.43 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 13, 2024 License: MIT Imports: 4 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GenerateTypeUsageCode

func GenerateTypeUsageCode(a reflect.Type) string

GenerateTypeUsageCode generates the code for using a type from another package. It constructs the code representation for the type as it would be used in another package, including the package name and type name. If the type is from the same package, it returns just the type name.

For example, if the type is "Demo" from package "abc", this function will return "abc.Demo". If the package path is empty, it simply returns the type name.

GenerateTypeUsageCode 用于生成从其他包调用某个包类型的代码。 它构造了类型在其他包中的使用代码,包括包名和类型名。 如果类型来自相同的包,则只返回类型名。

举个例子,如果类型是来自包 "abc" 的 "Demo",这个函数将返回 "abc.Demo"。 如果包路径为空,则只返回类型名。

func GetObject

func GetObject[T any]() (a T)

GetObject 能够在编译阶段预防T是指针类型(比如*A)的情况

func GetPkgName

func GetPkgName(a any) string

func GetPkgNameV2

func GetPkgNameV2[T any]() string

func GetPkgNameV3

func GetPkgNameV3(a any) string

func GetPkgNameV4

func GetPkgNameV4[T any](p *T) string

func GetPkgPath

func GetPkgPath(a any) string

GetPkgPath 在 Go 语言中,通过反射是无法直接获取函数的包名的。 reflect.TypeOf(a).PkgPath() 只适用于结构体对象,而不能用于结构体指针,而不适用于指针/函数/方法类型。 接口假如存的是非指针对象也只能解出对象的类型而非接口的类型,接口假如存的是对象指针还是不能得到,解析结果是依据存的数据类型,能不能解出也是看是否符合前面的规则 函数本身没有一个与之关联的类型,因此无法通过反射获取其包的完整导入路径。 如果你需要获取函数所属的包名,最好的方式是直接在代码中引用函数。

func GetPkgPathV2

func GetPkgPathV2[T any]() string

GetPkgPathV2 就是 GetPkgPath 的泛型版啦,因为最开始是没有泛型的,而其后Go支持泛型 认为非泛型版也是很有用的(当对象是从函数传过来的,而外部函数非泛型时,而外部函数非常底层没法逐级加泛型时,或者对象过多时,使用非泛型版都是有优势的) 因此保留非泛型版而把泛型版命名为V2,毕竟只添加两个字符就能解决问题,还能保证含义不变,V2也还行

func GetPkgPathV3

func GetPkgPathV3(a any) string

func GetPkgPathV4

func GetPkgPathV4[T any](p *T) string

func GetPkgPaths

func GetPkgPaths(objectsTypes []reflect.Type) []string

GetPkgPaths returns the package paths of the provided reflect.Type objects. GetPkgPaths 返回给定 reflect.Type 对象的包路径。

func GetQuotedPackageImportPaths

func GetQuotedPackageImportPaths(objectsTypes []reflect.Type) []string

GetQuotedPackageImportPaths generates the import paths for the provided types, with the necessary quotes for import statements. GetQuotedPackageImportPaths 生成给定类型的导入路径,再为导入语句加上必要的双引号。

func GetType

func GetType(a any) reflect.Type

GetType returns the reflect.Type of the provided object. GetType 返回提供对象的 reflect.Type。

func GetTypeName

func GetTypeName(a any) string

func GetTypeNameV2

func GetTypeNameV2[T any]() string

func GetTypeNameV3

func GetTypeNameV3(object any) string

GetTypeNameV3 获取类型名称,由于有的时候会传对象而有的时候会传指针,因此这里做个简单的适配

func GetTypeNameV4

func GetTypeNameV4[T any](p *T) string

func GetTypeV2

func GetTypeV2[T any]() reflect.Type

GetTypeV2 is a generic version of GetType. It returns the reflect.Type of the result from GetObject[T](). GetTypeV2 是 GetType 的泛型版本,返回 GetObject[T]() 结果的 reflect.Type。

func GetTypeV3

func GetTypeV3(object any) reflect.Type

GetTypeV3 returns the reflect.Type of an object. It checks if the object is a pointer, and if so, it returns the type of the underlying value. GetTypeV3 获取对象的 reflect.Type。如果对象是指针,返回指针所指向的值的类型。

func GetTypeV4

func GetTypeV4[T any](p *T) reflect.Type

GetTypeV4 is a generic function that takes a pointer and returns the reflect.Type of the dereferenced value. GetTypeV4 是一个泛型函数,接受一个指针并返回解引用后的值的 reflect.Type。

func GetTypes

func GetTypes(objects []any) []reflect.Type

GetTypes extracts the reflect.Type for each objects. GetTypes 从给定的对象列表中提取每个对象的 reflect.Type。

func NewObject

func NewObject[T any]() (a *T)

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL