在围棋上有什么=
和:=
运营商之间的区别?他们似乎都是为了分配?这可能很明显,但我似乎无法在文档中找到它。Golang运营商的区别:= VS =
回答
只有=
是赋值运算符。
:=
其实并不是一个operator可言。它是Short variable declarations子句句法的一部分。
感谢所有:D和感谢jnml链接到文档 – Chris
所以它是否意味着变量与推断类型?对? –
的:=手段声明和分配而=意味着简单地分配。
在围棋,:=
是声明+赋值,而=
仅用于分配。
例如,var foo int = 10
相同foo := 10
。
难道你不是指'var foo int = 10'吗?在Go中,类型位于变量名称后面。 – amon
@amon对不起,我不太熟悉go语法,让我改变这个 – Chaos
这应该是答案。示例非常有用,而不仅仅是文档的链接。 – rottenoats
:=
声明和受让人,=
只是分配
,当你不想填写您的代码类型或结构声明它是有用的。
// Usage with =
var i int
var U, V, W float64
var k = 0
var x, y float32 = -1, -2
// Usage with :=
i, j := 0, 10
f := func() int { return 7 }
ch := make(chan int)
:=
是一个短期申报。
a := 10
b := "gopher"
a
将被声明为int
,并用值10
其中作为b
将被宣布为一个字符串,并用值gopher
初始化初始化。
他们使用=
当量将
var a = 10
var b = "gopher"
=
是赋值运算符。它的使用方式与您在其他语言中使用它的方式相同。
当你声明变量,则可以省略类型和初始化存在(http://tour.golang.org/#11)。
从参考文档:(tour.golang.org)
在函数,所述:=
短赋值语句可以在适当位置以隐含类型一个变种声明的使用。
在函数之外,每个构造都以关键字(var,func等等)开头,并且:=构造不可用。
这两者都是Go语言中变量声明的不同方法。
var firstName := "John" // is a variable declaration
和
firstName := "John" // is a short variable declaration.
短变量声明是与初始化表达式,但没有任何类型的常规变量声明的简写。
阅读下面的细节:
我认为你的语法在第一个例子中是错误的。而不是:var firstName:=“John”,它应该是:var firstName =“John” – Gino
“:=”使用在同一时间做声明和动初始化,下面是一个例子。的“=”
变种I INT
我
用法= 10
https://play.golang.org/p/RU88ty_SGa
用法“:=”
I:= 10
正如其他人已经解释过,:=
是双方的声明和分配,并自动尝试猜测(推断)变量的类型。
它的短手形:
var foo int
foo = 32
// OR:
var foo int = 32
// OR:
var foo = 32
有些规则
不能使用:=
出funcs
。
illegal := 42
func foo() {
legal := 42
}
不能使用他们两次:
legal := 42
legal := 42 // <-- error
因为,:=
介绍“一个新的变量”,因此使用它两次不重新声明第二个变量,所以它的非法。
但是,您可以在“多变量”声明,两次使用它们,如果其中一个变量是新:
foo, bar := someFunc()
foo, jazz := someFunc() // <-- jazz is new
baz, foo := someFunc() // <-- baz is new
这是合法的,因为,你是不重新声明变量,你只是重新分配现有变量的新值,并带有一些新变量。
可以使用他们,如果一个变量已经与以前相同的名称声明:
var foo int = 34
func some() {
// because foo here is scoped to some func
foo := 42 // <-- legal
foo = 314 // <-- legal
}
这里,foo := 42
是合法的,因为,它在some()
FUNC的范围redeclares foo
。 foo = 314
是合法的,因为它只是为foo
重新分配新值。
_
您可以将它们用于多变量声明和赋值:
foo, bar := 42, 314
jazz, bazz := 22, 7
_
可以在作用域语句上下文喜欢重用他们:如果,为,开关:
foo := 42
if foo := someFunc(); foo == 314 {
// foo is scoped to 314 here
// ...
}
// foo is still 42 here
因为,if foo := ...
分配,只对if
条款访问。
所以,作为一般规则:除非你重新声明一个变量,你可以使用:=
,或者,如果要覆盖现有的值,就可以使用=
。
感谢您提及所有用例。 – AnirbanDebnath
- 1. 的JavaScript +运营商VS - 运营商
- 2. 全球运营商和会员运营商之间的区别
- 3. Boost.Spirit:运营商之间的区别“%=”和“=”
- 4. 运营商之间的区别+ =和= +
- 5. |之间的区别和>运营商
- 6. |有什么区别?和||或运营商?
- 7. Php:|有什么区别?和||运营商
- 8. 〜和!有什么区别?运营商?
- 9. Ternary?运营商VS传统的if-else运营商在C#
- 10. ==运营商的成本vs < or >运营商
- 11. Int32.Equals vs'=='运营商
- 12. 运营商'。' VS ' - >' 在C++
- 13. Java isInstance vs instanceOf运营商
- 14. JavaScript - === vs ==运营商性能
- 15. 联成员运营商VS内嵌运营商C++
- 16. 运营商的情况下运营商
- 17. 空 - 结合运营商和运营商&&
- 18. 或运营商与三元运营商
- 19. 铸造运营商 - 常量VS非const
- 20. C++ STL分配器VS运营商新
- 21. ç串联操作VS +运营商
- 22. java if condition == false vs!运营商
- 23. Twitter搜索API VS运营商
- 24. 运营商内部vs外部重载
- 25. >>>与>>运营商之间的区别
- 26. NSPredicate中ALL,ANY和SOME运营商之间的区别
- 27. rxjs 5中发布和多播运营商有什么区别?
- 28. Javascript:?运营商
- 29. R%*%运营商
- 30. instanceof运营商
**另请参阅此**:[Go Variables Visual Guide](https://blog.learngoprogramming.com/learn-go-lang-variables-visual-tutorial-and-ebook-9a061d29babe)。我写了一篇关于它的文章。 –
语义... – JustDave