1. 插件
????????json to struct
? ? ? ? 类似于postman的插件
2. 快捷键设置
vscode:只需要设置【前进、后退】
{
"tabnine.experimentalAutoImports": true,
"bracketPairColorizer.depreciation-notice": false,
"window.zoomLevel": 1,
"editor.fontSize": 14,
// 单元测试: t.Log(xxx)
"go.buildFlags": [
"-v"
],
"json-to-go.inputSource": "clipboard",
"go.addTags": {
"tags": "json,sql",
// omitempty选项: 指定如果字段具有空值,定义为false,0,零指针,nil接口值以及任何空数组,切片,映射或字符串,则该字段应从编码中省略
"options": "", // "options": "omitempty"
"promptForTags": false,
// transform: 蛇形 snakecase, 驼峰 camelcase
"transform": "camelcase"
},
// 鼠标右键展示
"go.editorContextMenuCommands": {
// 为定义好的接口,创建实现类: Generate Interface Stubs ==> Ctrl+i
// 为结构体[添加]Tag: add Tags To Struct Fields ==> Ctrl+T
"addTags": true,
// 将结构体[删除]Tag: remove Tags From Struct Fields
"removeTags": false,
// fill-struct: Ctrl + .
"fillStruct": false,
// 生成单元测试For函数
// generate Unit Test For Function
"generateTestForFunction": true,
"toggleTestFile": false,
"testAtCursor": false,
"testFile": false,
"testPackage": false,
"generateTestForFile": false,
"generateTestForPackage": false,
"addImport": false,
"testCoverage": false,
"playground": false,
"debugTestAtCursor": false,
"benchmarkAtCursor": false
}
}
代码案例
package vscodeshow
/*--- 生成单元测试 ---*/
// [1]快捷键: 生成单元测试的方法
// 1. 光标定位到add函数位置
// 2. ctrl+p
// 3. 输入 >generate Unit Test For Function
// [2]单元测试t.Log输出到控制台
// 在setting.json文件中,添加配置
// "go.buildFlags": ["-v"]
// [3]单元测试的执行
// 在单元测试的上面,有一个按钮"run test",点击就会执行该单元测试
func add(a, b int) int {
return a + b
}
/*--- 为结构体(添加|删除)Tag ---*/
type StudentTest struct {
// 1. ctrl + p, >
// 2. 增加标签: add Tags To Struct Fields
// 3. 删除标签: remove Tags From Struct Fields
FirstName string `json:"firstName" sql:"firstName"`
LastName string `json:"lastName" sql:"lastName"`
Age int `json:"age" sql:"age"`
URL string `json:"url" sql:"url"`
}
/*--- 自动实现接口 ---*/
// 1. 首先,定义一个接口,如Person
// 2. 然后,自动生成实现接口
// 2.1. ctrl+p
// 2.1. 输入 >Generate Interface Stubs
// 2.2. 输入 格式 { 名字 *结构体 待实现的接口名字}
// ---> { s *Student Person } Student实现Person接口
// ---> { t *Teacher Person } Teacher实现Person接口
// 3. 创建结构体
// 3.1. 声明新的结构体 type Student struct{}
// 3.2. 声明新的结构体 type Student struct{}
/*--- 查找interface的实现类: ctrl+F12,右键+转到实现 ---*/
type Person interface {
eat() int
run() string
work() int64
}
type Student struct {
name string
age int
}
/*--- fill-struct自动填充结构体中的字段: ctrl + . ---*/
func (s *Student) eat() int {
panic("not implemented") // TODO: Implement
}
func (s *Student) run() string {
panic("not implemented") // TODO: Implement
}
func (s *Student) work() int64 {
panic("not implemented") // TODO: Implement
}
type Teacher struct{}
func (t *Teacher) eat() int {
panic("not implemented") // TODO: Implement
}
func (t *Teacher) run() string {
panic("not implemented") // TODO: Implement
}
func (t *Teacher) work() int64 {
panic("not implemented") // TODO: Implement
}
3. snippet:自动生成代码
{
"错误日志打印": {
"prefix": "lg",
"body" : "ctx.Error(\"|err:%+v\",err)",
},
"生成新的Svr": {
"prefix": "gensvr",
"body" : [
"var default$1Svr = &$1Svr{}",
"type $1Svr struct{}",
"func Get$1Svr() *$1Svr {",
"return default$1Svr",
"}",
]
},
}
|