vscode+golang 高效编码

时间:2025-02-27 10:19:22

1. 插件

        json to struct

        类似于postman的插件

2. 快捷键设置

vscode:只需要设置【前进、后退】

{
    "": true,
    "-notice": false,
    "": 1,
    "": 14,
    // 单元测试: (xxx)
    "": [
        "-v"
    ],
    "": "clipboard",
    "": {
        "tags": "json,sql",
        // omitempty选项: 指定如果字段具有空值,定义为false,0,零指针,nil接口值以及任何空数组,切片,映射或字符串,则该字段应从编码中省略
        "options": "", // "options": "omitempty"
        "promptForTags": false,
        // transform: 蛇形 snakecase, 驼峰 camelcase
        "transform": "camelcase" 
    },
    // 鼠标右键展示
    "": {
        // 为定义好的接口,创建实现类: 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]单元测试输出到控制台
//     在文件中,添加配置
//        "": ["-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" : "(\"|err:%+v\",err)",
	},
	"生成新的Svr": {
		"prefix": "gensvr",
		"body" : [
			"var default$1Svr = &$1Svr{}",
			"type $1Svr struct{}",
			"func Get$1Svr() *$1Svr {",
			"return default$1Svr",
			"}",
		]
	},

}