我是Go的新手,有一个问题。
据我所知,以下两个片段基本相同。
var
但是为什么for var i = 0; i < 10; i++ {
//do something
}
语句不能在for循环中使用?
syntax error: var declaration not allowed in for initializergo
会有一个class Header extends Component {
constructor(props) {
super(props)
this.state = {
title: 'React App',
keywords: 'Type Above'
}
}
inputData = (event) => {
console.log(event.target.value)
this.setState({ keywords: event.target.value ? event.target.value : 'Type Above' })
}
handleSubmit = (event) => {
event.preventDefault();
alert('Button Clicked');
this.setState({ keywords: "" });
}
render() {
return (
<div>
<h2>{this.state.title}</h2>
<form onSubmit ={this.handleSubmit}>
<center>
<input type="text"
placeholder="Search Value..."
onChange ={this.inputData} />
<h3>{this.state.keywords}</h3>
</center>
<button> BUtton </button>
</form>
</div>
)
}
}
为什么要这样设计?有什么想法吗?
如果有人能告诉我,我将不胜感激。
答案 0 :(得分:3)
this form of the for
clause中的初始化语句不能是任何类型的语句,而必须是"simple statement"(这种情况的一种情况是您看到的"short variable declaration")。
由于这个原因,就像Go语言中的许多其他选择一样:为了使您的代码具有可读性并使其看起来与其他开发人员的Go代码类似:如果您可以在此处输入任何类型的语句,则for
循环并不总是很容易识别的(除了循环初始化外,还会混合一些顾虑)。