Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- )
- type Creator func() Plugin
- type Plugin interface {
- Pr()
- }
- var Plugins = map[string]Creator{}
- func Add(name string, creator Creator) {
- Plugins[name] = creator
- }
- func CreatePluginStruct(creator Creator) Plugin {
- return creator()
- }
- func main() {
- RedisInt()
- name := "redis"
- creator := Plugins[name]
- newstruct := CreatePluginStruct(creator)
- newstruct.Pr()
- }
- //以下是另一个文件
- type Redis struct {
- Name string
- }
- func (r Redis) Pr() {
- fmt.Println(r.Name)
- }
- //模拟init()
- func RedisInt() {
- Add("redis", func() Plugin {
- return &Redis{Name: "redis"}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement