Golang条件编译

admin 发表于 [Golang] 分类,标签: Go
0

编译标签方式

  1. 例如:
// +build darwin freebsd netbsd openbsd

在源码头部放置条件编译标签,将限制文件仅能在BSD系统进行编译

  1. 当一个文件有多个编译标签,总的限制是单个限制的逻辑与,例如:
// +build linux darwin
// +build 386

限制只能在linux/386或darwin/386平台上编译

  1. 条件编译规则:

    • 空格分隔符被作为条件编译标签逻辑“或”的选项值
    • 每个条件选项用逗号隔开形成逻辑“与”
    • 每个条件项由字母数字组成,在前面加“!”表示否定
  2. 注意:

    编译标签和包声明之间要有换行符

    // +build !linux
    
    package mypkg // correct
    

文件后缀方式

假如源文件使用_$GOOS.go方式的后缀,将在对应的平台上编译。

同样可以用$GOARCH.go或者两者结合的后缀 _$GOARCH_$GOOS.go

例如:

mypkg_freebsd_arm.go // only builds on freebsd/arm systems
mypkg_plan9.go       // only builds on plan9

发表我的评论