golang 实现通过类名加方法名调用服务

457 阅读1分钟

项目中开发需要,需要通过前端地址来访问后端的服务,本人封装了一个service 工具类,具体如下 有感兴趣的码有可以使用下。

我开发实际项目中使用场景是,针对每一个web 请求,需要创建一个controller接口,接参数,处理逻辑,调用service,调用model,然后返回数据。我设计的初衷是省去了controller层,只要关注service 层逻辑,大大提高了代码效率。

package main

import (
   "fmt"
   "github.com/codewangz/goutils/service"
)

type testService struct {
}

func (s *testService) A(params service.Params) service.Result {
   str := params.GetString("str") // 通过getString 获取参数,返回值为string 类型,当然还有其他获取参数。
   fmt.Println(str)
   return str
}

func init() {
   service.RegisterService(new(testService))
}

func main() {
   p := service.Params{}
   p["str"] = "hello world"
   //test.a 表示调用testService的A方法,A必须大写,否则访问不到。
   //p 是参数 传了str 为 hello world 字符串。
   result := service.Call("test.a", p) 
   fmt.Println(result)
}

输出结果

hello world
hello world