- Notifications
You must be signed in to change notification settings - Fork3
🕵️♂️ Extract a string representation of Go type
License
samber/go-type-to-string
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
For thesamber/do project, I needed to convert a Go type into a string. I used to convert it withfmt.Sprintf("%T", t)
->mypkg.MyStruct
, but it does not insert package path into type representation, leading to collision when types from different pacakges match.
This package export type using the following representation:
*[]**<-chan github.com/samber/example .Example||^||Typename|^|Thepackagepath (includingpackagename)^Typeindicators (map,slice,pointer,channel...)
This library supports:
- primitive types
- pointers
- structs
- functions with input and output
- vaargs
- interfaces
- maps
- arrays
- slices
- channels
- generics
- anonymous types
- named types
Known limitations:
- structs in anonymous types
- structs in generic type
any("foobar")
is currently reported asany
instead ofstring
(see#2)
Using the following types:
package exampletypetestStructstruct{}typetestGeneric[Tany]struct{tT }typetestNamedTypetestStruct
Type | Exported |
---|---|
int | int |
*int | *int |
**[]*int | **[]*int |
**[]*map[int]bool | **[]*map[int]bool |
func (a string, b bool) int | func (string, bool) int |
func(int, ...string) (bool, error) | func(int, ...string) (bool, error) |
testStruct | github.com/samber/example.testStruct |
*testStruct | *github.com/samber/example.testStruct |
***testStruct | ***github.com/samber/example.testStruct |
***testNamedType | ***github.com/samber/example.testNamedType |
[][3]***testStruct | [][3]***github.com/samber/example.testStruct |
testGeneric[string] | github.com/samber/example.testGeneric[string] |
*map[testStruct]chan<- testGeneric[string] | *map[github.com/samber/example.testStruct]chan<- github.com/samber/example.testGeneric[string] |
See more exampleshere
go get github.com/samber/go-type-to-string
This library is v1 and follows SemVer strictly. No breaking changes will be made to exported APIs before v2.0.0.
GoDoc:https://pkg.go.dev/github.com/samber/go-type-to-string
package exampleimport converter"github.com/samber/go-type-to-string"typeExamplestruct{foostringbarint}funcmain() {name1:=converter.GetType[*Example]()// "*github.com/samber/example.Example"name2:=converter.GetValueType(Example{})// "github.com/samber/example.Example"}
- Ping me on Twitter@samuelberthe (DMs, mentions, whatever :))
- Fork theproject
- Fixopen issues or request new features
Don't hesitate ;)
# Install some dev dependenciesmake tools# Run testsmaketest# ormake watch-test
Give a ⭐️ if this project helped you!
Copyright © 2023Samuel Berthe.
This project isMIT licensed.
About
🕵️♂️ Extract a string representation of Go type