GO语言(十八):模糊测试入门(下)-Reverse为了解决这个问题go语言中import , 如果输入不是有效的 UTF-8 ,让go语言中import我们返回一个错误 。
a.在您的文本编辑器中,将现有Reverse函数替换为以下内容 。
如果输入字符串包含无效的 UTF-8 字符,此更改将返回错误 。
b.由于 Reverse 函数现在返回错误 , 因此修改main函数以丢弃额外的错误值 。将现有main功能替换为以下内容 。
这些调用Reverse应该返回一个 nil 错误,因为输入字符串是有效的 UTF-8 。
c.您将需要导入错误和 unicode/utf8 包 。main.go 中的 import 语句应如下所示 。
d.修改reverse_test.go文件检查是否有错误,如果返回产生错误则跳过测试 。
除了返回之外,您还可以调用t.Skip()以停止执行该模糊输入 。
a.使用 go test 运行测试
b.使用go test -fuzz=Fuzz进行模糊测试,几秒钟后,停止用ctrl-C模糊测试 。
除非您通过-fuzztime标志进行限制,否则模糊测试将一直运行 , 直到遇到失败的输入 。如果没有发生故障,默认是永远运行,并且可以使用 中断该过程ctrl-C 。
c. 使用go test -fuzz=Fuzz -fuzztime 30s 。如果没有30 秒发现失败,它会在退出模糊测试 。
模糊测试通过了!
做得很好!您刚刚学习了在 Go 中进行模糊测试 。
— main.go —
— reverse_test.go —
go语言import时为什么都从github导入?网络不稳就用不了因为github是一个汇集了好多写好的代码的库 。所以大家都从那里下载 。其实你import的时候,那个库已经goget到了本地了 。
go语言import时为什么都从github导入go/src/go-cve-dictionary-master
# mv subcommands-master /opt/go/src/subcommands
# mv net-master /opt/go/src/net
# mv go-sqlite3-master /opt/go/src/go-sqlite3
都放到了go/src目录下了go语言中import,go语言中import我还修改了go-cve-dictionary-master/main.go文件内容,如下所示:
import (
"flag"
"fmt"
"os"
"golang.org/x/net/context"改为 逗context地
"github.com/google/subcommands"改为subcommands
"github.com/kotakanbe/go-cve-dictionary/commands" 改为 go-cve-dictionary/commands
"github.com/kotakanbe/go-cve-dictionary/version" 改为 go-cve-dictionary/version
_ "github.com/mattn/go-sqlite3"改为go-sqlite3
)
执行 # go install go-cve-dictionary-master 错误如下:
can't load package: /opt/go/src/go-cve-dictionary-master/main.go:14:2: non-standard import "github.com/mattn/go-sqlite3" in standard package "go-cve-dictionary-master"
go-cve-dictionary-master/main.go:11:2: cannot find package "go-cve-dictionary/commands" in any of:
/opt/go/src/vendor/go-cve-dictionary/commands (vendor tree)
/opt/go/src/go-cve-dictionary/commands (from $GOROOT)
/root/go/src/go-cve-dictionary/commands (from $GOPATH)
go-cve-dictionary-master/main.go:12:2: cannot find package "go-cve-dictionary/version" in any of:
/opt/go/src/vendor/go-cve-dictionary/version (vendor tree)
/opt/go/src/go-cve-dictionary/version (from $GOROOT)
/root/go/src/go-cve-dictionary/version (from $GOPATH)
subcommands/subcommands.go:29:2: cannot find package "golang.org/x/net/context" in any of:
/opt/go/src/vendor/golang.org/x/net/context (vendor tree)
/opt/go/src/golang.org/x/net/context (from $GOROOT)
/root/go/src/golang.org/x/net/context (from $GOPATH
golang为什么不推荐使用相对路径来importgo可以使用相对路径,import "../somepkg"这种语法可以通过编译 。
但是请考虑一种情境,假设现在工程目录下四级有一个go文件需要引入工程目录下一级的包,如果使用相对路径 , 这样写:
import "../../../pkg"
用$GOPATH,则这样写:
import "project/pkg"
你觉得哪种可读性更强?
另外,不同路径的源文件,如果引用工程中同一个package,用$GOPATH,都是一样的:
import "project/pkg"
用相对路径则可能不同:
import "../pkg" (pkg下一级源文件)
import "../../pkg" (pkg下两级源文件)
【go语言中import go语言中的map】关于go语言中import和go语言中的map的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 免费射击手游游戏推荐女生,免费的射击小游戏
- js根据不同类型执行不同方法的简单介绍
- 五阿哥电商如何,五阿哥平台 经营模式
- 大闸蟹直播引流话术怎么说,直播带货大闸蟹
- oracle怎么取上月 oracle取上个月月份
- pythonpkl文件格式,python 文件 tell
- 怎么装显卡风扇,装完机显卡风扇不转
- 电商如何出入库,电商出入库流程
- 关于vb.net初始化对象的信息