dsfdsf21321 2019-06-22 06:50
浏览 60
已采纳

多包go模块中的名称解析问题

I'm trying to create a module that contains multiple packages but I don't understand why I'm getting errors.

Layout:

λ ~/code/go-test/src/mod-test/ » tree
.
├── cmd
│   └── a.go
├── go.mod
├── main.go
└── pkg
    └── foo
        └── b.go

3 directories, 4 files

main.go:

package main

import (
        "fmt"
        "github.com/go-test/mod-test/cmd"
)

func main() {
        fmt.Println("main")
        A()
}

cmd/a.go:

package cmd

import (
        "fmt"
        "github.com/go-test/mod-test/pkg/foo"
)

func A() {
        fmt.Println("a")
        B()
}

pkg/foo/b.go:

package foo

import "fmt"

func B() {
        fmt.Println("B")
}

go.mod:

module github.com/go-test/mod-test

go 1.12

I get the following error:

λ ~/code/go-test/src/mod-test/ » go build
# github.com/go-test/mod-test/cmd
cmd/a.go:5:2: imported and not used: "github.com/go-test/mod-test/pkg/foo"
cmd/a.go:10:2: undefined: B

Can anyone help explain what I've done wrong and why I get the error?

Thanks,

  • 写回答

2条回答 默认 最新

  • doujia7094 2019-06-22 06:59
    关注

    There is bug in the cmd/a.go. You did not use "github.com/go-test/mod-test/pkg/foo". Also B() is under github.com/go-test/mod-test/pkg/foo package, so you have to specify it. See below:

    package cmd

    import (
            "fmt"
            "github.com/go-test/mod-test/pkg/foo"
    )
    
    func A() {
            fmt.Println("a")
            // B()
            foo.B()
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 BV260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序