在圍棋上有什麼=
和:=
運營商之間的區別?他們似乎都是爲了分配?這可能很明顯,但我似乎無法在文檔中找到它。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