我不明白这个错误意味着什么,但我认为它在绝对路径和供应商路径中的包之间出现了混淆。我怎么才能不把它弄糊涂呢?
# 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
发布于 2019-09-18 04:53:07
这个错误意味着这两种类型虽然是等价的,因为它们生活在单独的包中,但它们被视为不同的类型。要使代码工作,可以从oss
路径导入github.com/terraform-providers/terraform-provider-alicloud/vendor/...
。或者让你的应用程序供应商同时使用connectivity
和oss
。
发布于 2019-09-17 02:50:03
编译器不能用"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,,即使它们具有相同的名称(但来自不同的包)。
https://stackoverflow.com/questions/57957331
复制相似问题