首页 > 后端开发 > Golang > 如何使用带有模块的内部包来有效组织Go代码?

如何使用带有模块的内部包来有效组织Go代码?

Susan Sarandon
发布: 2024-12-25 14:12:24
原创
891 人浏览过

How to Effectively Organize Go Code Using Internal Packages with Modules?

了解内部包及其用法

问题:

如何使用“内部”包有效地组织 Go 代码?

初始问题:

尽管将项目放在 GOPATH 之外,但从 main.go 导入内部包会失败,除非使用相对路径(例如“./internal/foo|bar”)。

模块介绍:

随着Go中模块的介绍v1.11 及以上版本,不再需要将项目放入 $GOPATH/src 中。相反,您需要创建一个 go.mod 文件来指定每个模块的位置。

示例:

考虑以下项目结构:

project/
  go.mod
  main.go

  internal/
    bar/
      bar.go
      go.mod
    foo/
      foo.go
      go.mod
登录后复制

go.mod 文件:

内部包的 go.mod 文件很简单:

module bar

go 1.14
登录后复制
module foo

go 1.14
登录后复制

内部包中的代码:

// bar.go
package bar

import "fmt"

// Bar prints "Hello from Bar"
func Bar() {
    fmt.Println("Hello from Bar")
}

// foo.go
package foo

import "fmt"

// Foo prints "Hello from Foo"
func Foo() {
    fmt.Println("Hello from Foo")
}
登录后复制

main.go:

// main.go
package main

import (
    "internal/bar"
    "internal/foo"
)

func main() {
    bar.Bar()
    foo.Foo()
}
登录后复制

项目 go.mod文件:

项目 go.mod 文件通知 Go 有关内部包及其位置的信息:

module project

go 1.14

require internal/bar v1.0.0
replace internal/bar => ./internal/bar
require internal/foo v1.0.0
replace internal/foo => ./internal/foo
登录后复制

重要说明:

  • require 部分中的名称供 Go 内部使用,可以任意。
  • require 部分中的版本号在此上下文中并不重要。
  • 替换行指定 Go 可以在哪里找到内部包。

执行:

现在将运行 main.go 文件print:

Hello from Bar
Hello from Foo
登录后复制

这个示例演示了如何使用模块在 Go 项目中有效地使用内部包。

以上是如何使用带有模块的内部包来有效组织Go代码?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板