Go'da golf oynamak için hangi genel ipuçlarınız var? Code Golfing konusunda yeniyim ve genel olarak golfle ilgili sorunları çözmek için en azından bir şekilde Go'ya özgü olan fikirleri arayacağım.
Lütfen cevap başına bir ipucuna uyun.
Go'da golf oynamak için hangi genel ipuçlarınız var? Code Golfing konusunda yeniyim ve genel olarak golfle ilgili sorunları çözmek için en azından bir şekilde Go'ya özgü olan fikirleri arayacağım.
Lütfen cevap başına bir ipucuna uyun.
Yanıtlar:
Buradaki @ EMBLEM'in cevabından ilham alındı .
Bir paketin fonksiyonlarını global isim alanına şu şekilde koyabilirsiniz:
package main
import ."fmt"
func main() {
Printf("Hello World!")
}
Paketleri içe aktarırken ne istersen adlandırabilirsin.
package main
import f "fmt"
func main() {
f.Printf("Hello World\n")
}
Bunu burada öğrendim .
import ."fmt"
ve sonra yapabilirsiniz ve Println
geri kalan fmt
fonksiyonlar global isim alanındadır. Ayrıca, noktalı virgül gerekmez. Hiç, bir hatta birden fazla
Birden Fazla Değişken Bildirmek:
i,s:=0,""
var(i int;s string)
Dize Dönüşümünden İnt: (sınırlı ama bazen yararlı)
n:=byte("9"[0])-48 // actual type is uint8
n,_:=strconv.Atoi("9")
Ve Versa
s:=string(9+48)
s:=strconv.Itoa(9)
fmt.Sprint
Büyük strconv.Atoi
olasılıkla fmt
zaten içe aktardığınız için baytları tasarruf etme olasılığı yüksektir .
strconv
Golf kodunun normal kodda ne olacağını göstermek için orada olduğumu düşünüyorum .
Go derleyicisi önceden tanımlanmış print
ve println
fmt almayı gerektirmeyen işlevler, bunun yerine.
package main
import."fmt"
func main(){Printf(`Hello World
`)}
Bunu yazabilirsin.
package main
func main(){print(`Hello World
`)}
Bunun STDERR'ye çıktığını unutmayın.
For range döngüsünde birçok şey isteğe bağlıdır.
Standart versiyon:
for i,v:=range a{
// Do stuff
}
Eğer i
, v
önceden tanımlanmış ve üzerine yazılabilir:
for i,v=range a{
// Do stuff
}
Değer umursamıyorsanız:
for i:=range a{
// Do stuff
}
Değer umursamıyorsanız ve i
zaten tanımlanmışsa:
for i=range a{
// Do stuff
}
Endeks veya değeri umursamıyorsanız:
for range a{
// Do stuff
}
Sonsuz bir döngü istiyorsanız:
for{
// Do stuff
}
Herhangi bir sayıda açılış parantezini bir satıra koyabilirsiniz, ancak açılış parantezleri içeren bir hat en fazla bir kapanış parantezi içerebilir.
Doğru:
func main(){if true{switch{case 1==1:for{break
}}}}
Ayrıca doğru:
func main(){if true{switch{case 1==1:for{break}
}}}
Ayrıca doğru:
func main(){if true{switch{case 1==1:for{
break}}}}
Yanlış:
func main() {
if true{for{break}}
}
Git bit işlemleri için farklı operatör önceliği vardır <<
, >>
, &
vb genellikle daha düşük önceliğe sahip +
ve -
çoğu dilde, ama git de onlar aynı önceliğe sahiptir *
ve /
.
Precedence Operator
5 * / % << >> & &^
4 + - | ^
3 == != < <= > >=
2 &&
1 ||
Bu, bazı parantezleri kurtarmak için kullanılabilir.
Çoğu dil:
(a&b)*c
Gitmek:
a&b*c
Go
Etiketi oluşturmak isteyebiliriz , fakat o zaman Go burada golf oynamak için bile kullanılıyor mu?