Tips umum apa yang Anda miliki untuk bermain golf di Go? Saya baru mengenal Code Golfing dan mencari ide yang dapat diterapkan pada masalah kode golf secara umum yang setidaknya agak spesifik untuk Go.
Anda juga dapat melakukan import ."fmt"dan kemudian Printlndan sisanya dari fmtfungsi 's berada di namespace global. Anda juga tidak perlu titik koma. Pernah, kecuali jika Anda memiliki beberapa pernyataan pada satu baris
cat
Perhatikan bahwa di Golang, kawat gigi harus berada di jalur yang sama, karena penyisipan titik koma otomatis. Info lebih lanjut: golang.org/doc/faq#semicolons .
kucing
7
Nilai pengembalian yang dinamai dapat menyimpan beberapa byte. Sebagai contoh:
func x()string{
r:="" //Do stuff
return r}
Anda dapat menyimpan 3 byte dengan
func x()(r string){
//Do stuff
return}
Ini lebih berguna jika Anda perlu mendeklarasikan beberapa variabel di awal fungsi Anda.
Anda dapat menempatkan sejumlah kawat gigi pembuka pada satu baris, tetapi garis yang berisi kawat gigi pembuka dapat memuat paling banyak satu kawat gigi penutup.
Go memiliki prioritas operator yang berbeda untuk operasi bit, <<, >>, &, dll biasanya memiliki didahulukan lebih rendah dari +dan -dalam kebanyakan bahasa, tetapi di mana mereka memiliki hak yang sama seperti *dan /.
Go
tag, tetapi kemudian, apakah Go bahkan digunakan untuk bermain golf di sini?Jawaban:
Terinspirasi oleh jawaban @ EMBLEM di sini .
Anda bisa meletakkan fungsi paket di namespace global saat Anda mengimpornya seperti:
sumber
Anda dapat memberi nama paket apa pun yang Anda suka saat mengimpornya.
Pelajari ini di sini .
sumber
import ."fmt"
dan kemudianPrintln
dan sisanya darifmt
fungsi 's berada di namespace global. Anda juga tidak perlu titik koma. Pernah, kecuali jika Anda memiliki beberapa pernyataan pada satu barisNilai pengembalian yang dinamai dapat menyimpan beberapa byte. Sebagai contoh:
Anda dapat menyimpan 3 byte dengan
Ini lebih berguna jika Anda perlu mendeklarasikan beberapa variabel di awal fungsi Anda.
sumber
Jika Anda perlu membandingkan banyak nilai yang berbeda dengan yang tunggal, mungkin lebih hemat ruang untuk menggunakan a
switch
dengan satu case.sumber
Mendeklarasikan Banyak Variabel:
Int From String Conversion: (terbatas tetapi terkadang bermanfaat)
Dan sebaliknya
sumber
fmt.Sprint
kemungkinan akan menghemat bytestrconv.Atoi
, karena Anda kemungkinanfmt
sudah mengimpor .strconv
ada di sana hanya untuk menunjukkan apa kode golf akan menjadi kode normal.Go compiler telah ditentukan sebelumnya
print
danprintln
fungsi yang tidak memerlukan impor fmt, jadi alih-alih ini.Anda bisa menulis ini.
Perhatikan bahwa ini output ke STDERR.
sumber
Banyak hal dalam loop rentang adalah opsional.
Versi standar:
Jika
i
,v
sudah ditentukan dan dapat ditimpa:Jika Anda tidak peduli dengan nilai:
Jika Anda tidak peduli dengan nilai dan
i
sudah didefinisikan:Jika Anda tidak peduli dengan indeks atau nilai:
Jika Anda ingin loop tak terbatas:
sumber
Perlu string untuk memuat baris baru? Jangan menulis
\n
, buat string mentah dengan backquote dan tuliskan baris baru literal di dalamnya.sumber
Anda dapat menempatkan sejumlah kawat gigi pembuka pada satu baris, tetapi garis yang berisi kawat gigi pembuka dapat memuat paling banyak satu kawat gigi penutup.
Benar:
Benar juga:
Benar juga:
Salah:
sumber
Go memiliki prioritas operator yang berbeda untuk operasi bit,
<<
,>>
,&
, dll biasanya memiliki didahulukan lebih rendah dari+
dan-
dalam kebanyakan bahasa, tetapi di mana mereka memiliki hak yang sama seperti*
dan/
.Ini dapat digunakan untuk menyimpan beberapa tanda kurung.
Sebagian besar bahasa:
Pergi:
sumber
Manfaatkan sepenuhnya fungsi kelas satu Go dengan menetapkan nama fungsi pustaka yang panjang ke variabel satu huruf.
sumber