登录
首页 >  Golang >  Go问答

按键带有点时能否配置键盘映射?

来源:stackoverflow

时间:2024-02-25 15:18:20 363浏览 收藏

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《按键带有点时能否配置键盘映射?》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

我有问题的代码(最小可重现示例):

import (
    "fmt"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/dynamodb"
    "github.com/aws/aws-sdk-go/service/dynamodb/expression"
)

const (
    tablename = "mytable"
)

var (
    sess = session.must(session.newsession())
    dynamodbclient = dynamodb.new(sess)
)

func main() {
    update := expression.set(
        expression.name("mymap.vitaly.zdanevich"),
        expression.value(true),
    )

    expr, _ := expression.newbuilder().withupdate(update).build()

    updateiteminput := dynamodb.updateiteminput{
        tablename: aws.string(tablename),
        key: map[string]*dynamodb.attributevalue{
            "pk": {
                s: aws.string("test"),
            },
        },
        updateexpression:          expr.update(),
        expressionattributenames:  expr.names(),
        expressionattributevalues: expr.values(),
    }
    fmt.printf("%#v\n", updateiteminput)

    dynamodbclient.updateitem(&updateiteminput)

}

结果 updateiteminput:

{
  expressionattributenames: {
    #0: "mymap",
    #1: "vitaly",
    #2: "zdanevich"
  },
  expressionattributevalues: {
    :0: {
      bool: true
    }
  },
  key: {
    pk: {
      s: "test"
    },
    sk: {
      s: "test"
    }
  },
  tablename: "mytable",
  updateexpression: "set #0.#1.#2 = :0\n"
}

是的,我知道点用于访问内部地图值,但在这种情况下最好的策略是什么?我当前的解决方案:

expression.Name("mymap."+strings.Replace(username, ".", "_", -1))

解决方案


aws 可以选择使用表达式属性名称来处理这种情况 (Ref)。但在 aws go 库中,表达式生成器通过按点和第三个括号拆分 name 来创建 expressionattributenames。 您可以尝试不使用表达式生成器。

updateItemInput := dynamodb.UpdateItemInput{
        TableName: aws.String(tableName),
        Key: map[string]*dynamodb.AttributeValue{
            "pk": {
                S: aws.String("test"),
            },
        },
        UpdateExpression:          aws.String("SET #0.#1 = :0"),
        ExpressionAttributeNames:  map[string]*string {
            "#0": aws.String("mymap"),
            "#1": aws.String("vitaly.zdanevich"),
          },
        ExpressionAttributeValues: map[string]*dynamodb.AttributeValue{
            ":0": {
                BOOL: aws.Bool(true),
            },
        },
    }
    fmt.Printf("%#v\n", updateItemInput)

    dynamodbClient.UpdateItem(&updateItemInput)

今天关于《按键带有点时能否配置键盘映射?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>