我有一个结构定义
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运算符并且阅读问题here,here,here& here暗示使用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)
}
答案 0 :(得分:2)
Go没有三元组,也不能像你在代码中看到的那样进行内联import React from 'react';
import ReactDOM from 'react-dom';
class AddButton extends React.Component{
constructor(props){
super(props);
this.state = {
isHidden: false,
title: '',
};
}
sendData = (data) => {
console.log(data);
this.setState({
title: data
})
};
toggleHidden = () => {
this.setState({
isHidden: !this.state.isHidden
})
}
render(){
return(
<div>
<div
onClick={this.toggleHidden.bind(this)}
className="addtask__btn">
+
</div>
{this.state.isHidden && <AddTaskBox handleClose={this.toggleHidden.bind(this)} handleClick={this.sendData.bind(this)}/>}
</div>
);
}
}
class AddTaskBox extends React.Component{
constructor(props){
super(props);
this.state = {
title: '',
description: ''
};
this.handleChange = this.handleChange.bind(this);
this.handleClick = this.handleClick.bind(this);
}
handleChange = (e) => {
this.setState({
[e.target.name]: e.target.value
})
}
handleClick = () => {
this.props.sendData(this.state.title);
}
render(){
return(
<div className="addtask__box" >
<div className="addtask__close" onClick={this.props.handleClose}>X</div>
<form >
<input
type="text"
name="title"
placeholder="Nazwa Czynności"
value={this.state.title}
onChange={this.handleChange}/>
<textarea
name="description"
value={this.state.description}
onChange={this.handleChange}
placeholder="Opis czynności">
</textarea>
<input
className="btn"
type="submit"
value="submit"
onClick={this.handleClick}/>
</form>
</div>
);
}
}
export {AddButton, AddTaskBox};
。你必须做一个正常的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 ""
}
当然,如果您处理多种类型(不仅仅是字符串),每种类型都需要一个这样的函数。
答案 1 :(得分:1)
您不能像使用其他语言中的三元运算符(或if / else语句)一样使用内联if ... else
语句,您只需按程序执行:
user := &data{ /* ... */ }
if user.invitecode == "" {
user.invitecode = "Mr"
} else {
user.invitecode = lnames.title
}