登录
首页 >  Golang >  Go问答

#Golang# user: LookupId not implemented on linux/386 golang

来源:SegmentFault

时间:2023-02-24 14:56:50 366浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《#Golang# user: LookupId not implemented on linux/386 golang》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

在测试一个程序的时候,遇到如下报错

user: LookupId not implemented on linux/386 golang

服务器环境

2.6.32-279.el6.x86_64

操作系统版本

CentOS 5.8

go 的环境

GOARCH="386"
GOBIN="/home/apps/go/bin"
GOCHAR="8"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/apps/go-project/GO"
GORACE=""
GOROOT="/home/apps/go"
GOTOOLDIR="/home/apps/go/pkg/tool/linux_amd64"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m32"
CXX="g++"
CGO_ENABLED="0"

go 的版本

go version go1.2.1 linux/amd64

代码如下:

package main
import (
    "encoding/json"
    "fmt"
    "log"
    "os/user"
)

func main(){
    u, err := user.LookupId("500")
    if err != nil {
        log.Fatal(err)
    }

    data, err := json.MarshalIndent(u, "", "")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%s\n", data)
}

提问,在我现有的环境下,我要如何解决这个问题,这个报错,是说 linux/386 没有 Lookupid 的实现,使用什么命令编译会不出现这个问题?

注:在 go 的用户组也看到类似问题,但是没有看的很明白 连接为 Cross compilation and os/user (cgo problem)

正确答案

不同平台实现不一样的情况,我一般会针对不同的平台单独封装。

比如你的情况:
既然 linux/386 没有 Lookupid 的实现,我会把

    u, err := user.LookupId("500")

单独搞到一个文件去实现,比如386平台

lookuppid_386.go

func LookupId(id string) (*User, error) {
   // 实现
}

其它有实现的平台,可以直接调用api, 比如

lookuppid_unix.go

func LookupId(id string) (*User, error) {
    return user.LookupId(id)
}

你业务逻辑调用自己实现的 LookupId 函数

今天带大家了解了go的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表