Erkennung zur Kompilierungszeit
Wenn Sie dies tun, um je nach Betriebssystem unterschiedliche Implementierungen zu haben, ist es sinnvoller, separate Dateien mit der Implementierung dieser Funktion zu haben und jeder der Dateien Build-Tags hinzuzufügen. Dies wird an vielen Stellen in der Standardbibliothek verwendet, beispielsweise im os
Paket .
Diese sogenannten "Build-Einschränkungen" oder "Build-Tags" werden hier erläutert .
Angenommen, Sie haben die Konstante PATH_SEPARATOR
und möchten, dass diese Plattform abhängig ist. Sie würden zwei Dateien erstellen, eine für Windows und eine für den (Unix-) Rest:
/project/path_windows.go
/project/path_unix.go
Der Code dieser Dateien wäre dann:
path_windows.go
package project
const PATH_SEPARATOR = '\\'
path_unix.go
package project
const PATH_SEPARATOR = '/'
Sie können jetzt auf PATH_SEPARATOR
Ihren Code zugreifen und ihn plattformabhängig machen.
Erkennung zur Laufzeit
Wenn Sie das Betriebssystem zur Laufzeit ermitteln möchten, verwenden Sie die runtime.GOOS
Variable:
if runtime.GOOS == "windows" {
fmt.Println("Hello from Windows")
}
Während dies in die Laufzeit kompiliert wird und daher die Umgebung ignoriert, können Sie dennoch relativ sicher sein, dass der Wert korrekt ist. Der Grund dafür ist, dass jede Plattform, die es wert ist, unterschieden zu werden, aufgrund unterschiedlicher ausführbarer Formate neu erstellt werden muss und somit einen neuen GOOS
Wert hat.