$ gf gen service -h
USAGE
gf gen service [OPTION]
OPTION
-s, --srcFolder source folder path to be parsed. default: internal/logic
-d, --dstFolder destination folder path storing automatically generated go files. default: internal/service
-w, --watchFile used in file watcher, it generates service go files only if given file is under srcFolder
-a, --stPattern regular expression matching struct name for generating service. default: s([A-Z]\w+)
-p, --packages produce go files only for given source packages, multiple packages joined with char ','
-i, --importPrefix custom import prefix to calculate import path for generated importing go file of logic
-o, --overwrite overwrite service go files that already exist in generating folder. default: true
-h, --help more information about this command
20 Comments
强仔
强仔
GF Version: v2.1.2 已经解决.
强仔
生成service的文件名全是小写,是不是应该与service保持一致.
fushen
针对这个问题有给强哥提了PR,希望能被合并~
https://github.com/gogf/gf/pull/1953
强仔
我看了代码,好像是刻意转成小写的呢.另外请教您一下.我测试时生成的service会一些用不到的包,这个您了解是什么问题吗?
fushen
强哥说是bug,目前可以通过 goimports 工具自动清理多出包。
强仔
GF Version: v2.1.2 已经解决.
强仔
生成service时,没有判断逻辑代码是否注释.即使注释的方法也会生成;
强仔
这里我推荐使用GolandIDE,有个很棒的接口实现定位功能,具体如图。找到接口定义后,点击左边的小图标可快速定位具体的实现。
Code generated by GoFrame CLI tool. DO NOT EDIT.
老大,这个要把生成的头部修改一下,小图标才能出现.有上边这个就没有小图标.
烧饵块
自定义目录,会提示:
source folder path "internal/logic" does not exist
wqliu129
郭强 强仔 郭老板 您的GolandIDE 什么版本的,我这没有你说的那个小图标呀?
wqliu129
强仔 把文件的
Code generated by GoFrame CLI tool. DO NOT EDIT. 删除了就有小图标了!
Numst
请问我用gf gen service 为什么生成不了service文件,都需要哪些步骤
logic 文件已经写好了
ll internal/logic/
drwxr-xr-x 3 root root 4096 Sep 16 17:18 ./
drwxr-xr-x 11 root root 4096 Sep 14 15:51 ../
drwxr-xr-x 2 root root 4096 Sep 16 17:18 camera_type/
gf gen service
done!
只是返回了done 然后就没了
servcice还是空的
keith
你的那个是手动执行,自动不香么。。。
但我的也是,怀疑是作者偷懒。你需要自己先写一下注入和接口名称,将接口和实现函数关联(就是类似java中的构造方法,我总是搞混,魔怔了),然后你改动logic中实现方法,就会自动自动创建service中接口,不需要每次都改。
Numst
谢谢回复,不用自动是因为电脑用goland占用内存太大,然后我这这边排查了下,发现问题有个logic的返回值少了一个空格,这可太难受了
KingKong
想问一个先有蛋,还是先有鸡的问题:
要生成 service ,就要写 logic,但是 logic 里又有 service相关的引用和代码
那是不是意味着要先写 logic ,生成 service, 再把相关的servicer的代码再补上,这样操作是不是有点繁琐了
能否考虑以下方法:
使用 gf gen service -s srcDir -d dstDir 命令,直接生成 logic和service,然后在丰富logic的过程中,自动gen service ,这样是不是只需要专注 logic ,而增加了 service的自动化
另外一直使用 vscode,不知道vscode有没有自动化脚本。
糖水不加糖
对于goland service这层是不需要手动维护的 说白点也就是只管写logic保存下就自动更新service了
KingKong
func init() {
service.RegisterUser(New())
}
service自动更新我理解,想问一下logic里这二段代码怎么解耦。我有疑问的地方也是这里
我现在的步骤是先写 logic,但是不写 init 和 new 。生成 service后,再回来写 init 和 new
这样感觉怪怪的,如果是 gf gen service -s srcDir -d dstDir 命令,直接生成 logic和service 一步直接生成这二个文件的简体,后面只需要给logic加内容,再自动gen service是不是更合理一些。
糖水不加糖
可以简化下
func init() {
service.RegisterUser(&sUser{})
}
因为service是interface也就是可以多实现,在有多实现的时候必定要手动声明注册哪个实现.只是说你是单一实现看着有点多余罢了,简化后实质也只需写一个init表明用该接口实现
KingKong
明白了,感谢回复