8
我剛剛開始學習Go,並且陷入了變量作用域。Golang:if語句中的變量範圍
我最終如何解決這個事實,即我不能在if語句中創建一個變量並在之後使用它。
這是我的代碼。問題是new1不能在if語句之前創建,因爲它的大小取決於if語句的結果,並且通過在if語句中創建它,我不能在if語句結束後使用它。
if len(array1)>len(array2) {
new1 := make([]string,0,len(array1))
mc := Array2Map_string(array1)
for _,tok :=range array2 {
_, ok := mc[tok]
if ok {
new1[len(new1)]=tok
}
}
} else {
new1 := make([]string,0,len(array2))
mc := Array2Map_string(array2)
for _,tok :=range array1 {
_, ok := mc[tok]
if ok {
new1[len(new1)]=tok
}
}
}
new2 := make([]string,0,len(new1))
copy(new2, new1)
我能想到的唯一的事情就是做這樣的事情
var pointlessvariable uint
if len(array1)>len(array2) {
pointlessvariable=len(array1)
} else {
pointlessvariable=len(array2)
}
var new1 = make([]string,0,pointlessvariable)
if len(array1)>len(array2) {
...
老實說,如果這是真正的解決方案,然後我不認爲我想用Golang畢竟。
那麼解決這個問題的最好方法是什麼?
好的,謝謝。那麼這個數組是在第一行中實際創建的,還是隻是讓它準備好被創建並擁有更多的全局範圍? – Alasdair
這不是一個數組,而是一個切片。它在第一行創建,但其長度爲0,直到使用'make'來定義其長度(和容量)。但是,您仍然可以使用零大小的切片,例如'append':'make'不是唯一的解決方案。 – julienc
混淆:)謝謝 – Alasdair