当驱动程序具有相同的名称时,在 Golang 中的运行时选择一个 SQL 驱动程序

Choose an SQL driver at runtime in Golang when drivers have the same name

我想知道当这两个驱动程序具有相同的名称时,是否有一种方法或投影模式能够在运行时在 Golang 中选择 SQL 驱动程序。我想使用环境变量在 HTTP ClickHouse 驱动程序 (https://github.com/mailru/go-clickhouse) and native TCP ClickHouse driver (https://github.com/ClickHouse/clickhouse-go) 之间切换。

import(
//HTTP driver
_ "github.com/mailru/go-clickhouse"
)

func getHttpCHConnection() (*sql.DB, error) {
   ...
   db, err := sql.Open("clickhouse", clkConnUrl)
import(
//Native driver
_ "github.com/ClickHouse/clickhouse-go"
)

func getNativeCHConnection() (*sql.DB, error) {
    ...
    db, err := sql.Open("clickhouse", clkConnUrl)

通常,它会导致“恐慌:sql:为驱动程序 clickhouse 调用注册两次”。有没有可能避免这种情况?

从 mailru/go-clickhouse 的第 2 版开始可以同时使用它们,作者已将驱动程序名称更改为 chhttphttps://github.com/mailru/go-clickhouse/issues/151