Penting untuk dipahami bahwa gotokonstruk tersebut merupakan sisa dari hari-hari yang diprogram oleh programmer dalam kode mesin dan bahasa rakitan. Karena bahasa-bahasa itu sangat mendasar (seperti dalam, setiap instruksi hanya melakukan satu hal), aliran kontrol program dilakukan sepenuhnya dengan gotopernyataan (tetapi dalam bahasa assembly, ini disebut sebagai instruksi lompat atau cabang ).
Sekarang, meskipun bahasa C adalah level yang cukup rendah, ia dapat dianggap sebagai bahasa assembly tingkat sangat tinggi - setiap pernyataan dan fungsi dalam C dapat dengan mudah dipecah menjadi instruksi bahasa assembly. Meskipun C bukan bahasa utama untuk memprogram komputer dengan saat ini, masih banyak digunakan dalam aplikasi tingkat rendah, seperti sistem embedded. Karena fungsi C sangat dekat dengan fungsi bahasa assembly, maka masuk akal jika gotodimasukkan dalam C.
Jelas bahwa Java adalah evolusi C / C ++. Java berbagi banyak fitur dari C, tetapi abstrak lebih banyak detailnya, dan karenanya ditulis secara berbeda. Java adalah bahasa tingkat sangat tinggi, jadi tidak perlu memiliki fitur tingkat rendah seperti gotoketika lebih banyak konstruksi tingkat tinggi seperti fungsi, untuk, untuk masing-masing, dan sementara loop melakukan aliran kontrol program. Bayangkan jika Anda berada dalam satu fungsi dan melakukan gotolabel ke fungsi lain. Apa yang akan terjadi ketika fungsi lainnya kembali? Gagasan ini tidak masuk akal.
Ini tidak selalu menjawab mengapa Java menyertakan gotopernyataan itu tetapi tidak akan membiarkannya dikompilasi, tetapi penting untuk mengetahui mengapa gotopernah digunakan di tempat pertama, dalam aplikasi tingkat rendah, dan mengapa itu tidak masuk akal untuk menjadi digunakan di Jawa.