如何让golang不混淆供应商导入和绝对导入?

我不明白该错误意味着什么,但我认为绝对路径中的包和供应商路径中的包之间很混乱。怎样才能让它不混淆呢?


# github.com/GoogleCloudPlatform/terraformer/providers/alicloud

providers/alicloud/dum.go:10:35: cannot use func literal (type func(*"github.com/aliyun/aliyun-oss-go-sdk/oss".Client) (interface {}, error)) as type func(*"github.com/terraform-providers/terraform-provider-alicloud/vendor/github.com/aliyun/aliyun-oss-go-sdk/oss".Client) (interface {}, error) in argument to client.WithOssClient

这是最小的可重现代码


package dum


import (

    oss "github.com/aliyun/aliyun-oss-go-sdk/oss"

    "github.com/terraform-providers/terraform-provider-alicloud/alicloud/connectivity"

)


func dum() error {

    client := connectivity.AliyunClient{}

    raw, err := client.WithOssClient(func(ossClient *oss.Client) (interface{}, error) {

        return ossClient.ListBuckets()

    })

    if err != nil {

        return err

    }

    println(raw)


    return nil

}


编辑:解决方案


go mod vendor

go build -v


忽然笑
浏览 101回答 2
2回答

偶然的你

该错误意味着这两种类型虽然相同,但由于它们位于不同的包中,因此被视为不同的。要使代码正常工作,您可以oss从github.com/terraform-providers/terraform-provider-alicloud/vendor/...路径导入。或者让您的应用程序供应商同时提供connectivity和oss。

翻阅古今

编译器无法将“github.com/aliyun/aliyun-oss-go-sdk/oss”.Client替换为github.com/terraform-providers/terraform-provider-alicloud/vendor/github.com/aliyun/aliyun-oss- go-sdk/oss".Client,即使它们具有相同的名称(但来自不同的包)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go