在多平台下条件编译是很有必要的,具体做法直接看代码:
--------------main.go-------------
package main
// import (
// )
func main() {
print()
}
--------------pkg_imp1.go-------------
//+build imp1
package main
import (
"fmt"
)
func print() {
fmt.Println("imp1")
}
--------------pkg_imp2.go-------------
//+build imp2
package main
import (
"fmt"
)
func print() {
fmt.Println("imp2")
}
编译运行结果:
hh-mac:buildtag hh$ go build -tags "imp1" -o imp1
hh-mac:buildtag hh$ ./imp1
imp1
hh-mac:buildtag hh$ go build -tags "imp2" -o imp2
hh-mac:buildtag hh$ ./imp2
imp2
总结:
只要接口相同,在编译时使用tag即可指定具体实现