想法
想给一个开源库提交pr,新特新只能在某些go的版本上跑。自然就遇到要兼容不同go编译器的需求
搜索了下,找到如下语法。
// +build go1.10
作为一位老萌新,想要的效果是在go1.7,go1.8,go1.9调用函数A。大于go1.10调用B。
正常想法
第一反应是 要支持go1.7 go1.8 go1.9的代码加上
// +build go1.7 go1.8 go1.9
大于go1.10的加上
// +build >go1.10
真相
当运行的时候直接GG了,怎么调用都不行。忽然想了下 +build go-version,这里的语义会不会是 >= go-version或者是 <=go-version的语义,
// 最后通过试验终于得到 +build go-version是 >= go-version的语义。
// 如果go-version是 go1.10
// go1.10 go1.11 go1.12的编译器都会编译这段代码
// +build go1.10是大于或者等于go1.10编译器会编译
// +build !go1.10是小于go1.10编译器编译









网友评论