Files
deep_go/lessons/generics_and_reflection/universal_fabric/main.go

24 lines
351 B
Go
Raw Normal View History

package main
type Creator[T any] func() T
func NewInstance[T any](creator Creator[T]) T {
return creator()
}
type (
Book struct{}
Game struct{}
)
func main() {
bookCreator := func() Book { return Book{} }
gameCreator := func() Game { return Game{} }
book := NewInstance(bookCreator)
_ = book
game := NewInstance(gameCreator)
_ = game
}