当前位置: 首页 > 知识库问答 >
问题:

如果为空,则为结构中的字段赋值

莫兴言
2023-03-14
type data struct {
  invitecode string
  fname string
  lname string
}

我在解析后通过检索表单数据来填充

...

r.ParseForm()

new user := &data{
  invitecode: r.FormValue("invitecode"),
  fname: r.FormValue("fname")
  lname: r.FormValue("lname")
}

我希望检查从表单中获得的invitecode字段是否为空,如果是空,则通过调用函数填充它,如果不是,则使用检索到的值填充它(invitecode:if newuser.invitecode==“”{“mr”}else{lnames.title},)。我知道go没有一个tenary运算符,我想要使用这个运算符,阅读这里的问题,这里的问题,这里的问题,这里的问题意味着使用一个if else语句,但我似乎不能让它起作用。更好的,我正在寻找一个解决方案,检查的同时分配一个新的变量。尝试下面的代码似乎不起作用。如有任何帮助,我们将不胜感激。

package main

import (
    "fmt"
)

type data struct {
    invitecode string
    fname      string
    lname      string
}

func main() {
    var user data

    newUser := map[string]string{"invitecode": "", "fname": "Dude", "lname": "Did"}
    user = &data{
        invitecode: if newUser.invitecode == "" {"Mr"} else {lnames.title},
        fname:      newUser.fname,
        lname:      newUser.lname,
    }
    fmt.Println(user)
}

共有1个答案

楚冷勋
2023-03-14

Go没有三元组,也不能像代码中显示的那样执行内联if。您必须执行正常的if块:

user = &data{}
if newUser.inviteCode = "" {
    user.invitecode = "Mr"
} else {
    user.invitecode = lnames.title
}

等等。您可以将其提取到一个函数中:

func coalesce(args ...string) string {
    for _,str := range args {
        if str != "" {
            return str
        }
    }
    return ""
}

并按如下方式使用:

user.invitecode = coalesce(lnames.title, "Mr")
 类似资料:
  • 问题内容: 我正在努力从以下代码中获取正确的输出: 游乐场片段 打印时,结构字段为空。我敢肯定某个地方有一个愚蠢的错误,但是我仍然对Go还是陌生的,而且我已经在这里呆了几个小时。请帮忙。 问题答案: 这已经出现了很多次了。问题在于只能对导出的字段进行封送处理。 通过以大写(大写)字母开头来导出结构域。 在Go Playground上尝试一下。 请注意,JSON文本包含带有小写字母文本的字段名称,但

  • 我有数据类 我用jooq写了请求 但我有一个例外,若作者并没有书。这是合乎逻辑的,因为数据类Author中的外业手簿不可为空。我试图将伴生对象添加到数据类中 但是它不起作用,jooq仍然尝试使用默认构造函数,我得到了一个异常。有没有办法在不使数据类中的字段书作者为空的情况下修复它?

  • 问题内容: 在MySQL中,是否可以将“总计”字段设置为零(如果它们为NULL)? 这是我所拥有的: 数据输出正常,但NULL字段应为。 如何在MySQL中为NULL返回0? 问题答案: 使用IFNULL: 从文档中: 如果expr1不为NULL,则IFNULL()返回expr1; 否则返回expr2。IFNULL()返回数字或字符串值,具体取决于使用它的上下文。

  • 如果值为空,则需要在单元格中显示一个不间断的空格。这是我的模板: 我试过这个,但不管用: 它返回值的问题是: 如果许可证号带有值,则单元格为空,行颜色如下所示。 利用卢库马的建议,它表明了这一点: 更改筛选器中的if语句后,仍然不显示非值:

  • 问题内容: 我想按(不修改日期时间)将其排序(不修改日期时间),否则按(不发布日期时间)排序 问题答案: 似乎我每周在这里就此给出3条建议,也许我应该放弃并放任它:-)不,我不这么认为: __ 如果希望数据库很好地扩展,请 不要 在列计算(或子句)中使用逐行函数。你应该为你的具体情况检查性能( 测量,不要猜测 ),但是当做计算 读取 数据库通常会影响你的能力,规模(这不会不管你的通讯录数据库,但我

  • 我使用Symfony 5.3。我有一个表单,有3个字段没有映射到任何实体: "原因"-文本, use_predefined复选框 "predefined_reason"-下拉列表。 我构建的表单如下(一个片段): “原因”字段应根据需要显示在UI中,但其他两个字段不应显示。但是,在验证过程中,如果选中了复选框“预定义的原因”,则第一个字段不应为必填字段,而“预定义的原因”应为必填字段。