gpt4 book ai didi

go - 导入特定包

转载 作者:数据小太阳 更新时间:2023-10-29 03:24:55 26 4
gpt4 key购买 nike

我正在尝试解决依赖性问题:假设我想将 main.go 中的代码与我的数据库完全分离,我为此创建了 2 个包:dummy 和 postgres。

/app/
-- main.go

/dummy/
-- dummy.go

/postgres/
-- postgres.go

一切正常,我只需要在我的 main.go 中选择我想导入哪个包来获得一个行为或另一个......但是有没有办法在构建 main.go ?

如果有更惯用的方法来实现这一点,我当然非常感兴趣!

最佳答案

您可以通过构建标签利用 Go 条件构建并定位您对 main.go 的编译。

引用这个article并将您的想法付诸行动。

例如:

目录结构

build-tags
├── build-tags
├── dummy
│   └── dummy.go
├── main_dummy.go
├── main_postgres.go
└── postgres
└── postgres.go

示例实现:

dummy/dummy.go

package dummy

import "fmt"

func PrintName() {
fmt.Println("My name is dummy package")
}

postgres/postgres.go

package postgres

import "fmt"

func PrintName() {
fmt.Println("My name is postgres package")
}

main_dummy.go

// +build dummy

package main

import "build-tags/dummy"

func main() {
dummy.PrintName()
}

postgres.go

// +build postgres

package main

import "build-tags/postgres"

func main() {
postgres.PrintName()
}

现在让我们构建目标 dummy 标签,就像您可以为 postgres 标签做的那样。

go build --tags="dummy"

# run the program
./build-tags

My name is dummy package

关于go - 导入特定包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44738878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com