ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

03.vscode技巧2

2021-10-04 07:31:50  阅读:182  来源: 互联网

标签:03 技巧 vscode tt args int Add want Go


1.Go:Generate Unit Tests For Functions


使用方法
步骤1.书写函数,如下

// 代码文件 unit.go
package skill

func Add(a, b int) int {
    return a + b
}

func Sub(a, b int) int {
    return a - b
}

步骤2.创建测试文件 unit_test.go

package skill

如果测试文件已经存在,可以略过

步骤3.快捷键 Ctrl+Shift+P,选择 Go:Generate Unit Tests For Functions
生成代码如下

func TestAdd(t *testing.T) {
    type args struct {
        a int
        b int
    }
    tests := []struct {
        name string
        args args
        want int
    }{
        // TODO: Add test cases.
    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            if got := Add(tt.args.a, tt.args.b); got != tt.want {
                t.Errorf("Add() = %v, want %v", got, tt.want)
            }
        })
    }
}
func TestSub(t *testing.T) {
    type args struct {
        a int
        b int
    }
    tests := []struct {
        name string
        args args
        want int
    }{
        // TODO: Add test cases.
    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            if got := Sub(tt.args.a, tt.args.b); got != tt.want {
                t.Errorf("Sub() = %v, want %v", got, tt.want)
            }
        })
    }
}

// 补充完整的代码中 TODO:Add test cases
package skill

import (
    "testing"
)

func TestAdd(t *testing.T) {
    type args struct {
        a int
        b int
    }
    tests := []struct {
        name string
        args args
        want int
    }{
        // TODO: Add test cases.
        {
            name: ">0",
            args: args{
                a: 10,
                b: 20,
            },
            want: 30,
        }, {
            name: "=0",
            args: args{
                a: 0,
                b: 0,
            },
            want: 0,
        },
    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            if got := Add(tt.args.a, tt.args.b); got != tt.want {
                t.Errorf("Add() = %v, want %v", got, tt.want)
            }
        })
    }
}

func TestSub(t *testing.T) {
    type args struct {
        a int
        b int
    }
    tests := []struct {
        name string
        args args
        want int
    }{
        // TODO: Add test cases.
        {
            name: ">0",
            args: args{a: 6, b: 3},
            want: 3,
        },
        {
            name: "=0",
            args: args{a: 3, b: 3},
            want: 0,
        },
        {
            name: "<0",
            args: args{a: 6, b: 9},
            want: -3,
        },
    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            if got := Sub(tt.args.a, tt.args.b); got != tt.want {
                t.Errorf("Sub() = %v, want %v", got, tt.want)
            }
        })
    }
}

TODO: Add test cases.需要你填写自己的测试用例

不过要值的注意的是,在测试函数中,使用t.Log()函数是不会在终端输出内容的,需要加一个-v参数:

  • 在扩展商店里搜已经安装了的go插件,点击右下角的 设置图标
  • 选中扩展设置
  • 找到Go:Build Flags,添加 -v项,如下 这样在执行TestXXX函数的时候,就能在终端输出log的内容了

2.Go:fill Struct

操作步骤

步骤1.书写{},光标放到{}

步骤2.快捷键Shift+CMD+P,选择Go:Fill struct


生产代码结果

注意点:由于tests的类型是一个结构体切片[]struct,所以在生成的代码后面需要手动补一个逗号,,按保存就自动格式化代码了

3.Go:Generate Interface Stubs

示例代码

package skill

type Speaker interface {
    // Speak speak action
    Speak()
}

type Student struct {
}

快捷键Shift+CMD+P,选择Go:Generate Interface Stubs



生成代码如下
其中生成代码的时候,务必注意光标在 非函数体外

package skill

type Speaker interface {
    // Speak speak action
    Speak()
}

type Student struct { // Speak speak action

}

func (s *Student) Speak() {
    panic("not implemented") // TODO: Implement
}

4.自动增加/删除tag

  • 增加命令:Go:Add Tags To Struct Fileds
  • 删除命令:Go:Remove Tags From Struct Fileds
    选中你要生成tag的字段,执行命令(增加和删除都是同理,需要选中字段,只会执行已选中的字段)
  • 默认是只生成 json tag,可以自定义。在setting.json,加入go.addTags设置即可

5.Go:Add import

  • 一般情况下,保存,自动添加 import;
  • 但是有时候vscode在引入同名的包时,会引入错误的包,这种情况主要是本地pkg->mod目录下有了重名的库,vscode无法知道是哪个。
  • 这时候需要我们手动引入,执行命令,然后输入包名,从展示列表中选中你想要的回车即可,支持模糊搜索.

查找接口的具体实现

  • 鼠标移到接口定义处

  • 快捷键CMD+F12

  • 或者右键,选中:Go to implementations

6.Go:Extract to variable

字段提取主要用于判断条件复杂的场景,如果该条件判断在多个地方使用,最好是抽离出来,提取成一个变量

具体操作步骤:

  • 选中需要提取的内容
  • 执行命令
  • 输入要生成的变量名
  • 等待1s,生成代码

7.Go:Extract to function

示例代码

func ExtractFuncTest(a, b, c int) {
    if a > 0 {
    }
    if b > 0 {
    }
    if c > 0 {
    }
}





8.

标签:03,技巧,vscode,tt,args,int,Add,want,Go
来源: https://www.cnblogs.com/zsh2871/p/03vscode-ji-qiao2.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有