Bugün Go öğrenmeye başladım ve değişken kapsamlarda takıldım.Golang: If deyimleri içeride değişken kapsamı
Nihayetinde bir if ifadesinin içinde bir değişken oluşturamadığım ve sonradan kullanabildiğim gerçeğini anlatabildim.
Bu benim kodum. Sorun, new1'in if ifadesinden önce oluşturulamamasıdır çünkü boyutu if ifadesinin sonucuna bağlıdır ve if ifadesinin içinde oluşturup if ifadesi bittikten sonra kullanamıyorum. Aklıma
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)
tek şey bu gerçekten o zaman ben sonuçta Golang kullanmak istiyorum sanmıyorum çözüm ise oldukça dürüst olmak gerekirse
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) {
...
gibi bir şey yapmaktır.
Bunu çözmenin en iyi yolu nedir?
Tamam, teşekkür ederim. Yani bu dizi aslında ilk satırda mı yaratılıyor, yoksa sadece yaratılmaya hazır mı ve daha fazla küresel kapsamı var mı? – Alasdair
Bu bir dizi değil, bir dilim. İlk satırda oluşturulur, ancak uzunluğunu (ve kapasitesini) tanımlamak için "make" işlevini kullanana kadar uzunluğu 0'dır. Ama yine de sıfır boyuttaki bir dilim 'örneğin' ile ekleyebiliyorsunuz: 'make' tek çözüm değil. – julienc
Kafa karıştırıcı :) teşekkürler – Alasdair