我的应用程序在Linux服务器上运行,但我在Windows机器上开发。
我在编译“www.example.com“包中的函数和类型时遇到了问题golang.org/x/sys/unix。下面是我编译不好的部分代码:
if runtime.GOOS == "linux" {
var stat unix.Statfs_t
err := unix.Statfs(mount, &stat)
if err != nil {
fmt.Printf("Error: %v\n", err)
continue
}
totalSpace = uint64(stat.Blocks) * uint64(stat.Bsize)
freeSpace = uint64(stat.Bfree) * uint64(stat.Bsize)
}
我正在使用JetBrains的Goland进行编译。我收到以下错误:“未定义:unix.Statfs_t”和“未定义:unix.statfs”,“编译已完成,退出代码为2”。
我用go get -u "golang.org/x/sys/unix"
导入了这个包,但是我还是得到了这个错误。有人知道如何修复这个错误吗?
1条答案
按热度按时间bvn4nwqk1#
Go语言源文件包的导入是由编译器处理的,运行时检查
runtime.GOOS == "linux"
不起作用;那就太晚了,用Go语言编译器构建约束。对于Linux和Windows,使用显式和文件名隐式构建约束,
disk/disk.go
:disk/disk_linux.go
:disk/disk_windows.go
:disk/disk_other.go
:在Linux上:
在Windows上:
您可能需要考虑使用WSL进行开发。
Windows Subsystem for Linux (WSL)允许开发人员直接在Windows上运行GNU/Linux环境,无需修改,无需传统虚拟机或双引导设置的开销。