gpt4 book ai didi

基于配置变量的 Golang 导入

转载 作者:IT王子 更新时间:2023-10-29 01:59:35 26 4
gpt4 key购买 nike

我目前仍在学习 go,但我最近遇到了一个问题,在我的一项测试中,我想创建一个快速备份应用程序,该应用程序将引用配置文件并切换要使用的“插件”备份。所以我现在要做的是创建(例如,从我的头上写的,语法可能不正确):

type BackupStorage interface{
Put (d []byte) (n int, err Error)
Get (l []byte) (d []byte, err Error)
}

在这一点上我会假设我应该使用反射来切换类型并返回特定的备份函数,尽管这看起来不对。

我想到的第二个选择是仍然使用我的 BackupStorage 接口(interface)并创建“插件”包来指示将使用哪个导入,但是我如何根据配置文件变量切换它。我想这样做是因为一台机器上的一些东西可能只备份到 s3,而其他机器可能同时备份到 s3 和谷歌驱动器等。

通过上面的基本示例,我想到的是:实现 2 个 BackupStorage“插件”(Google Drive/S3),可以灵活地随时添加更多,但我的代码足够通用,可以在配置文件中选择的任何存储后端上执行。

正如我上面提到的,我仍在学习,任何解释或有关如何完成此任务的示例都将不胜感激。我不介意“你做错了”,只要对错误原因和正确做法有适当的解释即可。

最佳答案

您有正确的想法开始,通过接口(interface)实现您需要的一切,然后您可以插入实现该接口(interface)的任何具体备份“插件”。

一旦您可以通过界面运行备份,您就可以根据您设置的任何条件简单地分配您想要的后端实例。

var storage Backupper

type Backupper interface {
Backup()
}

type GDrive struct {
config string
}

func (g *GDrive) Backup() {
fmt.Println("Doing backup to Google Drive")
}

func main() {
storage = &GDrive{}
storage.Backup()
}

或有多个选项:http://play.golang.org/p/RlmXjf55Yh

关于基于配置变量的 Golang 导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28727087/

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