我需要去为Linux和Windows不同的包相同的文件的基础上我需要在Windows import github.com/hashicorp/go-syslog
和Linux上import log/syslog
我必须使用syslog.ALERT
或gsyslog.ALERT
依赖于操作系统的文件内部代码.对确实存在Go
的东西像宏C++
一样#ifdef
,所以我可以选择基于标志构建什么?如何实现这个没有,同一个文件有不同的内容用于基于操作系统的构建?
这是构建标记的用途:
构建约束(也称为构建标记)是开始的行注释
Run Code Online (Sandbox Code Playgroud)// +build
列出了文件应包含在包中的条件.约束可能出现在任何类型的源文件中(不仅仅是Go),但它们必须出现在文件顶部附近,前面只有空白行和其他行注释.这些规则意味着在Go文件中,构建约束必须出现在package子句之前.
在运行时区分OS/arch的另一种方法是使用运行时的GOOS和GOARCH常量:
GOARCH是正在运行的程序的架构目标:386,amd64或arm.
GOOS是运行程序的操作系统目标:darwin,freebsd,linux等之一.
您可以使用此处所述的构建标记.
简而言之,插入一条评论
// +build linux
Run Code Online (Sandbox Code Playgroud)
在文件的顶部,这个文件只能在linux上构建.于是
// +build windows
Run Code Online (Sandbox Code Playgroud)
只会在Windows上构建文件.
在提到注释后,请务必留空.阅读本文以供参考.
归档时间: |
|
查看次数: |
2197 次 |
最近记录: |