我是一名 Go 新手,试图覆盖适用于 DynamoDB 的 AWS Go 开发工具包中的一些方法。基本上,我想在 DynamoDB 客户端的某些方法中添加一些日志记录。我拥有的代码是:
type dynamoDBLogger struct {
dynamodb.DynamoDB
}
func (d *dynamoDBLogger) DeleteItemWithContext(ctx context.Context, item *dynamodb.DeleteItemInput) (*dynamodb.DeleteItemOutput, error) {
logger.Debug("Deleting from DynamoDB: %+v", *item)
return d.DynamoDB.DeleteItemWithContext(ctx, item)
}
换句话说,它只是在实际调用之前添加了一个日志记录语句。此代码编译。现在的问题是如何创建一个dynamoDBLogger?实例化 a 的唯一方法DynamoDB是使用方法:
func New(...) *dynamodb.DynamoDB
在dynamodb包中。我可以以某种方式使用它来构建 a 的实例dynamoDBLogger吗?不确定它是否会起作用,但我希望该*dynamoDbLogger类型可用作*dynamodb.DynamoDB.
编辑:我实际上注意到以下失败:
func GetDynamoClient(sess *session.Session) *dynamodb.DynamoDB {
svc := dynamoDBLogger{}
svc.DynamoDB = *dynamodb.New(sess)
return &svc
}
即类型系统不允许用 a*dynamodb.DynamoDB替换 a *dynamoDBLogger。我想知道 Go 的类型系统是否允许我想要完成的事情,因为dynamodb.DynamoDB不是接口?
红糖糍粑
相关分类