Önce biraz arka plan. Go'nun biçimsel dilbilgisi, ";"
birçok yapımda sonlandırıcı olarak noktalı virgül kullanır , ancak Go programları bunların çoğunu atlayabilir (ve daha net, kolay okunabilir bir kaynağa sahip olmaları gerekir; gofmt
ayrıca gereksiz noktalı virgülleri kaldırır).
Spesifikasyon kesin kuralları listeler. Spec: Noktalı virgül:
Biçimsel dilbilgisi noktalı virgül ";" bir dizi yapımda sonlandırıcılar olarak. Go programları, aşağıdaki iki kuralı kullanarak bu noktalı virgüllerin çoğunu atlayabilir:
Girdi jetonlara bölündüğünde, bir satırın son jetonundan hemen sonra jeton akışına otomatik olarak bir noktalı virgül eklenir.
Karmaşık ifadelerin tek bir satırı işgal etmesine izin vermek için, ")" veya "}" kapanışından önce bir noktalı virgül atlanabilir.
Gördüğünüz gibi, parantezden sonra bir yeni satır karakteri eklerseniz )
, ;
otomatik olarak bir noktalı virgül eklenir ve böylece sonraki satır, önceki satırın devamı olarak değerlendirilmez. Sizin durumunuzda olan budur ve bu nedenle ile başlayan bir sonraki satır .Scan(&ReadUser.ID,...
size derleme zamanı hatası verecektir çünkü bu tek başına (önceki satır olmadan) bir derleme zamanı hatasıdır:syntax error: unexpected .
Dolayısıyla, 1.
yukarıdaki maddede listelenen kurallarla çelişmeyen herhangi bir noktada çizginizi kırabilirsiniz .
Genelde virgülden sonra çizgileri kırabilir ,
sonra, açılış parantezi örneğin (
, [
, {
, ve bir nokta sonrasında .
bazı değerin bir alanı veya yöntemi referans olabilir. Ayrıca, ikili operatörlerden sonra (2 işlenen gerektiren) satırınızı da bölebilirsiniz, örneğin:
i := 1 +
2
fmt.Println(i)
Burada dikkat edilmesi gereken bir nokta, ilk değerleri listeleyen bir yapı veya dilim veya harita hazır bilgisine sahipseniz ve son değeri listeledikten sonra satırı kırmak istiyorsanız, bu son değer ,
olmasına ve hayır daha fazlası takip edecek, örneğin:
s := []int {
1, 2, 3,
4, 5, 6,
}
Bu, noktalı virgül kurallarına uymak ve ayrıca son virgül eklemeye / çıkarmaya gerek kalmadan yeniden düzenleyip yeni satırlar ekleyebilmeniz içindir; örneğin, kaldırıp yeni bir virgül eklemek zorunda kalmadan 2 satırı kolayca değiştirebilirsiniz:
s := []int {
4, 5, 6,
1, 2, 3,
}
Aynısı, bir işlev çağrısına argümanlar listelenirken de geçerlidir:
fmt.Println("first",
"second",
"third",
)