新特性1.18 泛型、workspace、模糊测试
# 1. 泛型
func sum[K string,V int64|float64|int 32|int16|int8](m map[k]V) V{
return -1;
}
// K和V就是泛型的写法。
1
2
3
4
5
2
3
4
5
升级版本
type Nubmer interface{
int64|float64|int 32|int16|int8
}
func sum[K string,V Nubmer](m map[k]V) V{
return -1;
}
1
2
3
4
5
6
7
2
3
4
5
6
7
// MyMap类型定义了两个类型形参 KEY 和 VALUE。分别为两个形参指定了不同的类型约束
// 这个泛型类型的名字叫: MyMap[KEY, VALUE]
type MyMap[KEY int | string, VALUE float32 | float64] map[KEY]VALUE
// 用类型实参 string 和 flaot64 替换了类型形参 KEY 、 VALUE,泛型类型被实例化为具体的类型:MyMap[string, float64]
var a MyMap[string, float64] = map[string]float64{
"jack_score": 9.6,
"bob_score": 8.4,
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# workspace
多模块工作目录。包的隔离。 简化replace。
本地多模块化开发,类似于maven的聚合工程。 方便调式。
Go 1.18新特性前瞻:Go工作区模式 (opens new window)
# 模糊测试
- 内嵌随机测试、 和单元测试的写法。
- 根据添加的测试集的规则再生成额外的测试集。
- 文件命名规范: xxx_test.go
- 方法命名规范: TestXxxx xxx为测试的方法命名
- 方法命名规范: FuzzXxxx
- 官方建议方法执行不能超过1ss
Go1.18最新功能:模糊测试 (opens new window)
在go的模糊测试中,会使用随机的数据对代码进行测试,以尝试找出漏洞或导致崩溃的输入。 可以通过模糊测试发现的一些漏洞示例包括 SQL 注入、缓冲区溢出、拒绝服务和跨站点脚本攻击。
编辑 (opens new window)
上次更新: 2023/01/23, 22:45:11