www.wikidata.id-id.nina.az
Artikel atau sebagian dari artikel ini mungkin diterjemahkan dari Go programming language di en wikipedia org Isinya masih belum akurat karena bagian yang diterjemahkan masih perlu diperhalus dan disempurnakan Jika Anda menguasai bahasa aslinya harap pertimbangkan untuk menelusuri referensinya dan menyempurnakan terjemahan ini Anda juga dapat ikut bergotong royong pada ProyekWiki Perbaikan Terjemahan Pesan ini dapat dihapus jika terjemahan dirasa sudah cukup tepat Lihat pula panduan penerjemahan artikel Artikel ini membutuhkan penyuntingan lebih lanjut mengenai tata bahasa gaya penulisan hubungan antarparagraf nada penulisan atau ejaan Anda dapat membantu untuk menyuntingnya Go sering disebut sebagai Golang adalah bahasa pemrograman yang dibuat di Google 13 pada tahun 2009 oleh Robert Griesemer Rob Pike dan Ken Thompson 11 Go adalah bahasa pemrograman sumber terbuka yang mudah sederhana efisien Selain itu Go memiliki level yang sama dengan Java Yaitu bahasa pemrograman yang dihimpun dan diketik dalam bahasa C dengan fitur pengumpulan sampah penulisan terstruktur keamanan memori dan pemrograman yang konkuren serta berurutan 14 Kompiler dan IDE lainnya disediakan oleh Google dari awal secara bebas dan sumber terbuka 15 GoParadigmaMulti paradigma bersamaan imperatif berorientasi objek 1 2 Dirancang olehRobert GriesemerRob PikeKen ThompsonpengembangPara Penulis Go 3 Rilis perdana10 November 2009 13 tahun lalu 2009 11 10 Rilis stabil1 21 3 4 10 Oktober 2023 10 Oktober 2023 Tipe SistemKuat statis disimpulkan struktural 5 6 nominalImplementasi dariGo Bahasa rakitan gc C frontendgo OSLinux macOS FreeBSD NetBSD OpenBSD 7 Windows Plan 9 8 DragonFly BSD SolarisLisensi3 clause BSD 3 hibah paten 9 Ekstensi nama berkas goWebsitego wbr devImplementasi utamagc gccgoTerpengaruh olehAlef APL 10 BCPL 10 C CSP Limbo Modula Newsqueak Oberon occam Pascal 11 Smalltalk 12 Mempengaruhi Crystalgo wbr dev Daftar isi 1 Sejarah 1 1 Versi 2 Desain Bahasa 2 1 Sintaks 2 2 Jenis Tipe Data 2 2 1 Sistem antarmuka 2 3 Sistem paket 2 4 Concurrency goroutines dan saluran 2 4 1 Kesesuaian untuk pemrograman paralel 2 4 2 Kurangnya kondisi balapan keselamatan 2 5 Kelalaian 2 6 Kritik 3 Konvensi dan kode style 4 Alat alat 5 Catatan 6 Referensi 7 Pranala luarSejarah suntingGolang dirilis perdana pada bulan November 2009 Golang telah digunakan di lingkungan produksi oleh Google dan perusahaan lain 16 Dua implementasi utama yang ada Google Go compiler gc yang dikembangkan sebagai perangkat lunak sumber terbuka Pihaknya menargetkan berbagai platform termasuk Linux OS X Windows berbagai BSD dan Unix versi dan juga sejak 2015 perangkat selular termasuk ponsel pintar 17 Kedua compiler acpi adalah GCC frontend 18 19 Gc toolchain telah self hosting sejak versi 1 5 20 Go awalnya sebuah percobaan oleh para insinyur Google Robert Griesemer Rob Pike dan Ken Thompson untuk merancang sebuah bahasa pemrograman baru yang akan menyelesaikan kritik umum dari bahasa lain selama masih mempertahankan karakteristik positif Pengembang dipertimbangkan bahasa baru seperti 21 diketik statis scalable untuk sistem yang besar seperti Java dan C produktif dan dapat dibaca tanpa terlalu banyak kata kunci wajib dan pengulangan 22 light on the page seperti bahasa dinamis tidak memerlukan lingkungan pengembangan terintegrasi tetapi mendukung mereka dengan baik mendukung jaringan dan multiprocessingDalam wawancara terakhir semua dari tiga perancang bahasa tidak suka terhadap kompleksitas C sehingga menjadi motivasi utama untuk mendesain sebuah bahasa baru 23 24 25 Google merilis Go 1 0 pada bulan Maret 2012 26 27 Versi sunting Go 1 menjamin kompatibilitas 28 untuk spesifikasi bahasa dan bagian utama dari pustaka standar Semua versi hingga perilisan Go 1 19 saat 29 telah menepati janji ini Setiap perilisan utama Go didukung hingga ada dua perilisan utama yang lebih baru 30 Perilisan Status Tanggal perilisan Akhir pemeliharaanOld version no longer supported go1 Old version no longer supported Kadaluwarsa 2012 03 28 2013 12 01Old version no longer supported go1 1 Old version no longer supported Kadaluwarsa 2013 05 13 2014 06 18Old version no longer supported go1 2 Old version no longer supported Kadaluwarsa 2013 12 01 2014 12 10Old version no longer supported go1 3 Old version no longer supported Kadaluwarsa 2014 06 18 2015 08 19Old version no longer supported go1 4 Old version no longer supported Kadaluwarsa 2014 12 10 2016 02 17Old version no longer supported go1 5 Old version no longer supported Kadaluwarsa 2015 08 19 2016 08 15Old version no longer supported go1 6 Old version no longer supported Kadaluwarsa 2016 02 17 2017 02 16Old version no longer supported go1 7 Old version no longer supported Kadaluwarsa 2016 08 15 2017 08 24Old version no longer supported go1 8 Old version no longer supported Kadaluwarsa 2017 02 16 2018 02 16Old version no longer supported go1 9 Old version no longer supported Kadaluwarsa 2017 08 24 2018 08 24Old version no longer supported go1 10 Old version no longer supported Kadaluwarsa 2018 02 16 2019 02 25Old version no longer supported go1 11 Old version no longer supported Kadaluwarsa 2018 08 24 2019 09 03Old version no longer supported go1 12 Old version no longer supported Kadaluwarsa 2019 02 25 2020 02 25Old version no longer supported go1 13 Old version no longer supported Kadaluwarsa 2019 09 03 2020 08 11Old version no longer supported go1 14 Old version no longer supported Kadaluwarsa 2020 02 25 2021 02 16Old version no longer supported go1 15 Old version no longer supported Kadaluwarsa 2020 08 11 2021 08 16Old version no longer supported go1 16 Old version no longer supported Kadaluwarsa 2021 02 16 2022 03 15Old version no longer supported go1 17 Old version no longer supported Kadaluwarsa 2021 08 16 2022 08 02Older version yet still supported go1 18 Older version yet still supported Pemeliharaan 2022 03 15 Q1 2023Current stable version go1 19 Current stable version Saat ini 2022 08 02 Q3 2023Future release go1 20 Future release Direncanakan Q1 2023 Q1 2024Legenda Versi lamaVersi lebih lama tetapi masih didukungVersi terkiniVersi pratayang terakhirRilis selanjutnyaDesain Bahasa suntingGo lebih dikenali dalam tradisi C tapi membuat banyak perubahan untuk meningkatkan singkatnya kesederhanaan dan keamanan Go terdiri dari Sintaks dan lingkungan mengadopsi pola pola yang lebih umum dalam bahasa dinamis 31 Opsional ringkas variabel deklarasi dan inisialisasi melalui jenis inferensi x span span 0 tidak int x 0 atau var x 0 Kompilasi cepat 32 Remote manajemen paket go get 33 dan paket dokumentasi daring 34 Khas pendekatan untuk masalah tertentu Built in concurrency primitif proses ringan goroutines saluran dan yang memilih pernyataan Sebuah antarmuka sistem di tempat virtual warisan dan jenis embedding bukan non virtual warisan Sebuah toolchain yang secara default menghasilkan statis terkait binari asli tanpa dependensi eksternal Keinginan untuk menjaga bahasa spesifikasi yang cukup sederhana untuk memegang di sebuah programmer kepala 35 di bagian dengan menghilangkan fitur fitur umum untuk bahasa yang sama Sintaks sunting Sintaks Go meliputi perubahan dari C bertujuan menjaga kode ringkas dan mudah dibaca Gabungan deklarasi inisialisasi operator diperkenalkan yang memungkinkan programmer untuk menulis saya span span 3 atau s span span Hello world tanpa menentukan jenis variabel Ini kontras dengan C int i 3 dan const char s Hello world Titik koma masih menghentikan pernyataan tetapi secara implisit ketika akhir baris yang terjadi Fungsi dapat mengembalikan beberapa nilai nilai dan mengembalikan result err pasangan adalah cara konvensional yang berfungsi menunjukkan kesalahan untuk penelepon di Go a Go menambahkan sintaks literal untuk menginisialisasi struct parameter dengan nama dan untuk inisialisasi peta dan irisan Sebagai alternatif untuk C tiga pernyataan for loop Ekspresi Go range memungkinkan ringkas iterasi lebih dari array irisan string peta dan saluran butuh rujukan Jenis Tipe Data sunting Go memiliki sejumlah tipe data bawaan yang ditanamkan termasuk numerik byte int64 float32 dll boolean dan string karakter string String yang berubah built in operator dan kata kunci bukan fungsi memberikan rangkaian perbandingan dan UTF 8 encoding dan decoding 36 jenis Catatan dapat didefinisikan dengan kata kunci struct butuh rujukan Untuk masing masing tipe T dan setiap non negatif konstanta integer n ada sebuah array jenis dilambangkan n T array yang berbeda beda panjangnya sehingga dari jenis yang berbeda Array dinamis yang tersedia sebagai iris dilambangkan T untuk beberapa jenis T Ini memiliki panjang dan kapasitas menentukan ketika baru memori yang harus dialokasikan untuk memperluas array Beberapa irisan dapat berbagi mereka mendasari memori 37 38 39 Petunjuk tersedia untuk semua type dan pointer ke T jenis dilambangkan T Alamat mengambil dan tipuan gunakan amp dan operator di C atau terjadi secara implisit melalui metode panggilan atau atribut akses sintaks 40 tidak Ada pointer aritmetika kecuali melalui khusus jenis unsafe Pointer di perpustakaan standar butuh rujukan Untuk pasangan dari jenis K V jenis map K V adalah jenis tabel hash memetakan tipe K kunci untuk tipe V nilai nilai Tabel Hash yang dibangun ke dalam bahasa dengan sintaks khusus dan built in fungsi chan T adalah saluran yang memungkinkan pengiriman nilai nilai dari tipe T antara bersamaan Go proses butuh rujukan Selain dukungan untuk antarmuka Go tipe sistem adalah nominal type kata kunci yang dapat digunakan untuk mendefinisikan baru bernama jenis yang berbeda dari lainnya bernama jenis yang memiliki letak yang sama dalam kasus sebuah struct anggota yang sama dalam urutan yang sama Beberapa konversi antara jenis misalnya antara berbagai tipe integer pra didefinisikan dan menambahkan jenis baru dapat menentukan konversi tambahan tapi konversi antara nama jenis harus selalu dipanggil secara eksplisit 41 sebagai contoh type kata kunci yang dapat digunakan untuk mendefinisikan tipe untuk IPv4 alamat yang adalah 32 bit unsigned integer butuh rujukan Dengan jenis definisi tersebut ipv4addr x menafsirkan uint32 nilai x sebagai alamat IP Dengan menginisiasi x untuk variabel jenis ipv4addr adalah kesalahan tipe butuh rujukan Ekspresi konstan dapat berupa diketik atau untyped mereka diberi jenis ketika ditugaskan untuk mengetik variabel jika nilai mereka mewakili melewati waktu kompilasi cek 42 Fungsi jenis ini adalah yang ditunjukkan oleh func kata kunci mereka mengambil nol atau lebih parameter dan kembali nol atau lebih nilai nilai yang diketik Parameter dan mengembalikan nilai nilai menentukan tipe fungsi dengan demikian func string int32 int error adalah jenis fungsi yang mengambil string dan 32 bit signed integer dan menandatangani sebuah integer default lebar dan nilai built in antarmuka jenis error butuh rujukan Setiap nama memiliki metode yang ditetapkan terkait dengan itu Alamat IP contoh di atas dapat diperpanjang dengan sebuah metode untuk memeriksa apakah nilai adalah standar yang dikenal Karena mengetik nominal definisi metode ini menambah sebuah method ke ipv4addr tetapi tidak pada uint32 Sedangkan method memiliki definisi khusus dan memanggil sintaks tidak ada method yang berbeda jenis 43 Sistem antarmuka sunting Go menyediakan dua fitur yang menggantikan kelas warisan butuh rujukan Yang pertama adalah embedding yang dapat dilihat sebagai bentuk otomatis dari komposisi 44 atau delegasi 45 255Yang kedua adalah antarmuka yang menyediakan runtime polimorfisme 46 266 menyediakan Antarmuka yang terbatas bentuk struktural mengetik di sebaliknya nominal jenis sistem Go Setiap jenis yang mengimplementasikan semua metode dari interface sesuai dengan antarmuka yang Antarmuka Go yang dirancang setelah protokol dari bahasa pemrograman Smalltalk 47 Beberapa sumber yang menggunakan istilah bebek mengetik ketika menggambarkan Go antarmuka 48 49 Meskipun istilah bebek mengetik tidak tepat didefinisikan dan oleh karena itu tidak salah itu biasanya berarti bahwa kesesuaian jenis ini tidak statis diperiksa Sejak kesesuaian untuk Go dengan antarmuka yang diperiksa dengan Go compiler kecuali ketika melakukan pernyataan jenis penulis Go lebih suka menggunakan istilah pengetikan struktural butuh rujukan Sebuah antarmuka menentukan satu set jenis dengan daftar yang diperlukan metode dan jenis mereka dan puas dengan setiap jenis yang memiliki metode yang diperlukan Pelaksana jenis yang tidak perlu menentukan mereka mengimplementasikan interface jadi jika Shape Square dan Circle didefinisikan sebagai Kedua Square dan Circle yang secara implisit Shape dan dapat ditugaskan untuk Shape diketik variabel 46 263 268 Dalam bahasa formal antarmuka Go sistem menyediakan struktural daripada nominal mengetik Interface dapat menanamkan antarmuka lain dengan efek menciptakan gabungan antarmuka yang puas dengan tepat jenis yang menerapkan tertanam antarmuka dan metode metode yang baru yang didefinisikan antarmuka menambahkan 46 270Go standar perpustakaan menggunakan antarmuka untuk memberikan genericity di beberapa tempat termasuk sistem input output yang didasarkan pada konsep konsep dari Reader dan Writer 46 282 283Selain memanggil metode melalui antarmuka Go memungkinkan mengubah antarmuka nilai nilai untuk jenis lain dengan run time type check Bahasa konstruksi untuk melakukannya adalah jenis pernyataan 50 yang memeriksa terhadap satu potensi jenis dan jenis switch 51 yang memeriksa terhadap beberapa jenis butuh rujukan Yang kosong antarmuka interface adalah sudut yang penting kasus ini karena hal ini dapat merujuk ke item dari setiap jenis beton Hal ini mirip dengan Object class dalam Java atau C dan puas dengan jenis apa pun termasuk built in jenis seperti int 46 284 Kode menggunakan kosong interface tidak hanya memanggil metode atau built in operator yang disebut objek tetapi dapat menyimpan interface nilai cobalah untuk mengubahnya menjadi lebih berguna melalui jenis jenis pernyataan atau jenis switch atau periksa dengan Go mencerminkan paket 52 Karena interface dapat merujuk ke nilai apapun itu adalah cara yang terbatas untuk melarikan diri dari batasan batasan statis mengetik seperti void di C tapi dengan tambahan run time type pemeriksaan butuh rujukan Antarmuka nilai nilai yang diimplementasikan dengan menggunakan pointer ke data dan pointer ke run time jenis informasi 53 Seperti beberapa jenis lain diimplementasikan dengan menggunakan pointer pada Go antarmuka nilai nilai nihil jika tidak terinisialisasi 54 Sistem paket sunting Dalam Kunjungan itu sistem paket setiap paket memiliki jalan misalnya kompres bzip2 atau golang org x net html dan nama misalnya bzip2 atau html Referensi lain paket definisi harus selalu menjadi diawali dengan paket lain nama dan hanya bermodal nama dari paket paket yang lain dapat diakses io Pembaca umum tapi bzip2 pembaca tidak 55 Perintah go get dapat mengambil paket yang disimpan dalam repositori jauh seperti GitHub 56 dan pengembang didorong untuk mengembangkan paket paket di dalam basis path yang sesuai dengan sumber repositori seperti github com user name package name untuk mengurangi kemungkinan tabrakan nama dengan penambahan masa depan untuk standar library atau perpustakaan eksternal 57 Proposal yang ada untuk memperkenalkan tepat paket solusi manajemen untuk Go mirip dengan Karat s sistem cargo atau Node s npm sistem 58 Concurrency goroutines dan saluran sunting Go bahasa memiliki built in fasilitas serta dukungan perpustakaan untuk menulis bersamaan program Concurrency mengacu tidak hanya untuk CPU paralelisme tetapi juga untuk asynchrony membiarkan lambat operasi seperti database atau jaringan baca dijalankan saat program melakukan pekerjaan lain seperti yang umum dalam acara berbasis server 59 Primer concurrency membangun adalah goroutine jenis cahaya berat badan proses Fungsi panggilan diawali dengan go kata kunci dimulai fungsi baru goroutine Bahasa spesifikasi tidak menentukan bagaimana goroutines harus dilaksanakan tetapi saat ini implementasi multipleks Go proses ini goroutines ke satu set yang lebih kecil dari sistem operasi benang mirip dengan penjadwalan yang dilakukan dalam Erlang 60 10Sementara standar perpustakaan menampilkan paket yang paling klasik concurrency control struktur mutex kunci dll tersedia 60 151 152 idiomatik bersamaan program bukan sukai saluran yang memberikan mengirim pesan antara goroutines 61 Opsional buffer menyimpan pesan di FIFO order 45 43 dan memungkinkan mengirim goroutines untuk melanjutkan sebelum mereka menerima pesan butuh rujukan Saluran yang diketik sehingga saluran dari jenis chan T hanya dapat digunakan untuk mentransfer pesan dari tipe T Sintaks khusus yang digunakan untuk beroperasi pada mereka lt ch adalah ekspresi yang menyebabkan melaksanakan goroutine untuk memblokir sampai nilai datang di channel ch sedangkan ch lt x mengirimkan nilai x mungkin memblokir sampai lain goroutine menerima nilai Built in switch suka select pernyataan yang dapat digunakan untuk mengimplementasikan non blocking komunikasi pada beberapa saluran lihat di bawah untuk contoh Go memiliki memori model yang menggambarkan bagaimana goroutines harus menggunakan saluran atau operasi lainnya untuk aman berbagi data 62 Keberadaan saluran set berpisah dari aktor model gaya konkuren bahasa seperti Erlang di mana pesan yang ditujukan langsung kepada pelaku sesuai dengan goroutines Aktor gaya dapat disimulasikan dalam Go dengan mempertahankan satu ke satu korespondensi antara goroutines dan saluran tetapi bahasa yang memungkinkan beberapa goroutines untuk berbagi saluran atau satu goroutine untuk mengirim dan menerima pada beberapa saluran 60 147Dari alat alat ini seseorang dapat membangun bersamaan konstruksi seperti pekerja outdoor pipa yang katakanlah sebuah file yang dikompres dan diurai karena popularitas latar belakang panggilan dengan batas waktu fan out panggilan paralel untuk satu set layanan dan lain lain 63 Saluran juga telah ditemukan menggunakan lebih dari biasanya gagasan interprocess communication seperti melayani sebagai concurrency daftar aman dari daur ulang buffer 64 pelaksana coroutines yang membantu menginspirasi nama goroutine 65 dan menerapkan iterator 66 Konvensi struktural terkait konkurensi dari Go saluran dan alternatif channel input yang berasal dari Tony Hoare yang berkomunikasi berurutan proses model Tidak seperti sebelumnya serentak bahasa pemrograman seperti Occam atau Limbo pekerjaan bahasa co desainer Go Rob Pike 67 Go tidak menyediakan built in gagasan aman atau diverifikasi concurrency 68 Sedangkan komunikasi proses model ini disukai di Go itu bukan hanya satu semua goroutines dalam program berbagi satu ruang alamat Ini berarti bahwa mutable benda benda dan petunjuk yang dapat dibagi antara goroutines lihat Go bahasa pemrograman Lack of race condition safety di bawah ini butuh rujukan Kesesuaian untuk pemrograman paralel sunting Meskipun Go concurrency fitur yang tidak ditujukan terutama untuk pemrosesan paralel 59 mereka dapat digunakan untuk program memori bersama multi prosesor mesin Berbagai studi telah dilakukan untuk keefektifan pendekatan ini 69 salah Satu studi membandingkan ukuran dalam baris kode dan kecepatan program yang ditulis oleh programmer berpengalaman yang tidak akrab dengan bahasa dan koreksi terhadap program program tersebut oleh seorang ahli dari Google pengembangan tim lakukan hal yang sama untuk Chapel Cilk dan Intel TBB Studi ini menemukan bahwa non ahli cenderung untuk menulis membagi dan menaklukkan algoritme dengan satu go pernyataan per rekursi sementara ahli menulis mendistribusikan kerja sinkronisasi program dengan menggunakan salah satu goroutine per prosesor Ahli program program yang biasanya lebih cepat tapi juga lebih lama 69 Kurangnya kondisi balapan keselamatan sunting Ada tidak ada pembatasan pada bagaimana goroutines mengakses data bersama membuat perlombaan kondisi yang mungkin Secara khusus kecuali program yang secara eksplisit sinkronisasi melalui saluran atau sarana lainnya menulis dari satu goroutine mungkin sebagian seluruhnya atau tidak sama sekali terlihat oleh yang lain sering dengan tidak ada jaminan tentang pemesanan menulis Selain itu Go struktur data internal seperti antarmuka nilai nilai iris tajuk tabel hash dan string header tidak kebal terhadap kondisi ras sehingga jenis dan memori keselamatan dapat dilanggar dalam program multithreaded yang memodifikasi berbagi contoh jenis jenis tanpa sinkronisasi 70 71 Bukannya dukungan bahasa aman concurrent programming dengan demikian bergantung pada konvensi misalnya Chisnall merekomendasikan sebuah ungkapan yang disebut alias xor bisa berubah yang berarti bahwa yang lewat bisa berubah nilai atau pointer melalui saluran sinyal yang mentransfer kepemilikan atas nilai kepada penerima 60 155 Kelalaian sunting Go sengaja menghilangkan fitur fitur tertentu yang umum dalam bahasa lain termasuk implementasi warisan pemrograman generik pernyataan pointer aritmetika dan konversi tipe implisit butuh rujukan Dari fitur bahasa ini penulis menyampaikan keterbukaan untuk pemrograman generik secara tegas membantah pernyataan dan pointer aritmetika saat membela pilihan untuk menghilangkan jenis warisan sebagai pemberian yang lebih berguna bahasa mendorong alih alih menggunakan antarmuka untuk mencapai dinamis pengiriman Efn Questions How do I get dynamic dispatch of methods and Why is there no type inheritance in the language FAQ Kesalahan pengutipan Tag lt ref gt harus ditutup oleh lt ref gt Merujuk pada pemrograman generik beberapa fungsi built in yang pada kenyataannya jenis generic tapi ini diperlakukan sebagai kasus kasus khusus Rob Pike panggilan ini kelemahan bahasa yang mungkin di beberapa titik akan berubah 37 tim Google yang dirancang bahasa dibangun setidaknya satu compiler untuk eksperimental dialek Go secara umum tapi tidak merilisnya 72 Setelah awalnya menghilangkan pengecualian pengecualian seperti panic recover mekanisme akhirnya ditambahkan untuk bahasa yang mana penulis menyarankan menggunakan untuk memecahkan kesalahan seperti orang orang yang harus menghentikan seluruh program atau permintaan server atau sebagai jalan pintas untuk menyebarkan kesalahan tumpukan dalam paket tetapi tidak seluruh paket batas tidak kesalahan kembali adalah standar API 73 74 75 76 Kritik sunting kritikus Go menyatakan bahwa kurangnya waktu kompilasi generik mengarah ke kode duplikasi metaprogramming tidak dapat diperiksa secara statis 77 78 dan standar perpustakaan tidak menawarkan algoritme generik 79 kurangnya ekstensi bahasa melalui misalnya operator overloading membuat tugas tugas tertentu lebih verbose 80 jenis sistem kurang pengetikan Hindley Milner menghambat keamanan dan atau ekspresi 77 81 82 Batas jeda dan overhead garbage collection GC Go yang digunakan sistem pemrograman dibandingkan dengan bahasa bahasa dengan manual manajemen memori Bahasa desainer berpendapat bahwa ini trade off yang penting untuk menuju kesuksesan 83 dan menjelaskan beberapa keputusan tertentu pada suhu udara 84 meskipun mereka mengekspresikan keterbukaan untuk menambahkan beberapa bentuk dari pemrograman generik di masa depan dan pragmatis perbaikan di daerah daerah seperti standardisasi cara cara untuk menerapkan kode generasi 85 GC telah ditingkatkan untuk sub milidetik waktu jeda dalam versi kemudian 86 87 88 Namun para pengembang mengakui bahwa GC ini algoritme ini tidak hard real time butuh rujukan Konvensi dan kode style suntingGo penulis menempatkan upaya substansial ke dalam molding gaya dan desain dari program Lekukan jarak dan permukaan lainnya tingkat rincian kode secara otomatis distandardisasi oleh gofmt alat golint apakah gaya tambahan pemeriksaan secara otomatis Alat dan perpustakaan didistribusikan dengan pendekatan Go suggest standard untuk hal hal seperti dokumentasi API godoc 89 pengujian go test bangunan go build manajemen paket go get dan sebagainya Go memberlakukan aturan yang rekomendasi dalam bahasa lain misalnya melarang siklik dependensi variabel yang tidak terpakai atau impor dan konversi tipe implisit Satu kelalaian dari fitur fitur tertentu misalnya fungsional pemrograman pintas seperti peta dan Jawa gaya mencoba akhirnya blok cenderung mendorong tertentu eksplisit beton dan pemrograman imperatif gaya Pada hari pertama Kunjungan tim menerbitkan sebuah koleksi Go idiom Diarsipkan 2015 01 06 di Wayback Machine dan kemudian juga dikumpulkan kode meninjau komentar Diarsipkan 2023 08 06 di Wayback Machine pembicaraan Diarsipkan 2015 10 02 di Wayback Machine resmi posting blog Diarsipkan 2015 12 08 di Wayback Machine untuk mengajarkan gaya dan coding filsafat Go Alat alat suntingGo memiliki beberapa perkakas pengawakutuan pengujian dan code vetting seperti banyak distribusi bahasa lain Distribusi Go bisanya memiliki alat alat go build yang membangun binari Go biner hanya menggunakan informasi dalam sumber file sendiri tidak terpisah makefiles go test untuk unit pengujian dan microbenchmarks go fmt untuk format kode go get untuk mengambil dan menginstal paket jarak jauh go vet analisis statis mencari potensi kesalahan dalam kode go run sebuah jalan pintas untuk membangun dan mengeksekusi kode godoc untuk menampilkan dokumentasi atau melayani via HTTP gorename untuk mengganti nama variabel fungsi dan jenis cara aman go generate cara standar untuk memanggil kode generatorHal ini juga termasuk profiling dan dukungan debugging runtime instrumentasi untuk misalnya melacak pengumpulan sampah jeda dan kondisi balapan tester Ada sebuah ekosistem alat pihak ketiga yang menambahkan untuk distribusi standar seperti gocode yang memungkinkan kode autocompletion dalam banyak teks editor goimports oleh seorang anggota tim yang secara otomatis menambahkan menghapus paket impor yang diperlukan errcheck yang mendeteksi kode yang mungkin tidak sengaja mengabaikan kesalahan dan banyak lagi Plugin yang ada untuk menambahkan dukungan bahasa untuk beberapa banyak digunakan editor teks Selain itu beberapa Ide yang tersedia Misalnya LiteIDE yang dicap sebagai simpel sumber terbuka IDE lintas platform untuk Go 90 dan GoLand yang mengklaim untuk menjadi mampu dan ergonomis 91 Catatan sunting Usually exactly one of the result and error values has a value other than the type s zero value sometimes both do as when a read or write can only be partially completed and sometimes neither as when a read returns 0 bytes See Semipredicate problem Multivalued return Referensi sunting Is Go an object oriented language Diarsipkan dari versi asli tanggal 2017 05 03 Diakses tanggal April 13 2019 Although Go has types and methods and allows an object oriented style of programming there is no type hierarchy Go code that grows with grace Diarsipkan dari versi asli tanggal 2022 06 18 Diakses tanggal June 24 2018 Go is Object Oriented but not in the usual way a b Text file LICENSE The Go Programming Language Diarsipkan dari versi asli tanggal 2021 11 01 Diakses tanggal October 5 2012 Release History Why doesn t Go have implements declarations golang org Diarsipkan dari versi asli tanggal 2017 05 03 Diakses tanggal 1 October 2015 Pike Rob 2014 12 22 Rob Pike on Twitter Diarsipkan dari versi asli tanggal 2022 04 07 Diakses tanggal 2016 03 13 Go has structural typing not duck typing Full interface satisfaction is checked and required lang go go 1 4 Go programming language OpenBSD ports 2014 12 23 Diarsipkan dari versi asli tanggal 2021 09 16 Diakses tanggal 2015 01 19 Go Porting Efforts Go Language Resources cat v 12 January 2010 Diarsipkan dari versi asli tanggal 2021 08 12 Diakses tanggal 18 January 2010 Additional IP Rights Grant The Go Programming Language Diarsipkan dari versi asli tanggal 2021 10 26 Diakses tanggal October 5 2012 a b Pike Rob 2014 04 24 Hello Gophers Diarsipkan dari versi asli tanggal 2018 12 01 Diakses tanggal 2016 03 11 a b Language Design FAQ golang org 16 January 2010 Diarsipkan dari versi asli tanggal 2013 01 02 Diakses tanggal 27 February 2010 The Evolution of Go Diarsipkan dari versi asli tanggal 2017 01 16 Diakses tanggal 2015 09 26 Kincaid Jason 10 November 2009 Google s Go A New Programming Language That s Python Meets C TechCrunch Diarsipkan dari versi asli tanggal 2010 01 18 Diakses tanggal 18 January 2010 Lebih dari satu parameter work dan newspaper yang digunakan bantuan More than one of work dan newspaper specified bantuan Metz Cade 5 May 2011 Google Go boldly goes where no code has gone before The Register Diarsipkan dari versi asli tanggal 2019 09 28 Diakses tanggal 2018 03 14 Salinan arsip Diarsipkan dari versi asli tanggal 2021 11 01 Diakses tanggal 2018 03 14 Go FAQ Is Google using Go internally Diarsipkan dari versi asli tanggal 2019 01 07 Diakses tanggal 2013 03 09 Google s In House Programming Language Now Runs on Phones wired com 19 August 2015 Diarsipkan dari versi asli tanggal 2021 09 18 Diakses tanggal 2018 03 14 FAQ Implementation golang org 16 January 2010 Diarsipkan dari versi asli tanggal 2013 01 02 Diakses tanggal 2010 01 18 Installing GCC Configuration Diarsipkan dari versi asli tanggal 2023 07 20 Diakses tanggal 2011 12 03 Ada Go and Objective C are not default languages Go 1 5 Release Notes Diarsipkan dari versi asli tanggal 2016 04 03 Diakses tanggal 28 January 2016 The compiler and runtime are now implemented in Go and assembler without C Pike Rob 28 April 2010 Another Go at Language Design Stanford EE Computer Systems Colloquium Stanford University Diarsipkan dari versi asli tanggal 2014 06 12 Diakses tanggal 2018 03 14 Video available Diarsipkan 2016 11 25 di Wayback Machine Frequently Asked Questions FAQ The Go Programming Language golang org Diarsipkan dari versi asli tanggal 2017 05 03 Diakses tanggal 2016 02 26 Andrew Binstock 18 May 2011 Dr Dobb s Interview with Ken Thompson Diarsipkan dari versi asli tanggal 2014 03 13 Diakses tanggal 2014 02 07 Pike Rob 2012 Less is exponentially more Diarsipkan dari versi asli tanggal 2016 03 21 Diakses tanggal 2018 03 14 Robert Griesemer 2015 The Evolution of Go Diarsipkan dari versi asli tanggal 2017 01 16 Diakses tanggal 2018 03 14 Shankland Stephen 2012 03 30 Google s Go language turns one wins a spot at YouTube The lower level programming language has matured enough to sport the 1 0 version number And it s being used for real work at Google News CBS Interactive Inc Diarsipkan dari versi asli tanggal 2020 11 25 Diakses tanggal 2017 08 06 Google has released version 1 of its Go programming language an ambitious attempt to improve upon giants of the lower level programming world such as C and C Release History Diarsipkan dari versi asli tanggal 2017 02 17 Diakses tanggal 2018 03 14 Go 1 and the Future of Go Programs golang org Diarsipkan dari versi asli tanggal 2017 10 02 Diakses tanggal 2022 10 10 Go 1 19 Release Notes go dev Diarsipkan dari versi asli tanggal 2023 05 29 Diakses tanggal 2022 10 10 Parameter url status yang tidak diketahui akan diabaikan bantuan Release History golang org Diarsipkan dari versi asli tanggal 2017 02 17 Diakses tanggal 2022 10 10 Pike Rob The Go Programming Language YouTube Diarsipkan dari versi asli tanggal 2013 02 11 Diakses tanggal 2011 07 01 Rujukan kosong bantuan Download and install packages and dependencies go The Go Programming Language Diarsipkan 2017 03 12 di Wayback Machine see godoc org Diarsipkan 2020 10 07 di Wayback Machine for addresses and documentation of some packages GoDoc godoc org Diarsipkan dari versi asli tanggal 2020 10 07 Diakses tanggal 2018 03 14 Rob Pike on The Changelog Diarsipkan 2013 10 20 di Wayback Machine podcast Rob Pike Strings bytes runes and characters in Go Diarsipkan 2015 01 03 di Wayback Machine 23 October 2013 a b Pike Rob 26 September 2013 Arrays slices and strings The mechanics of append The Go Blog Diarsipkan dari versi asli tanggal 2015 03 07 Diakses tanggal 7 March 2015 Andrew Gerrand Go Slices usage and internals Diarsipkan 2015 01 07 di Wayback Machine The Go Authors Effective Go Slices Diarsipkan 2021 02 09 di Wayback Machine The Go authors Selectors The Go Programming Language Specification Diarsipkan 2021 05 13 di Wayback Machine and Calls The Go Programming Language Specification Diarsipkan 2021 05 13 di Wayback Machine The Go Programming Language Specification golang org Diarsipkan dari versi asli tanggal 2021 03 18 Diakses tanggal 2018 03 14 The Go Programming Language Specification golang org Diarsipkan dari versi asli tanggal 2021 03 18 Diakses tanggal 2018 03 14 The Go Programming Language Specification golang org Diarsipkan dari versi asli tanggal 2021 03 18 Diakses tanggal 2018 03 14 Kesalahan pengutipan Tag lt ref gt tidak sah tidak ditemukan teks untuk ref bernama gohotdraw a b Summerfield Mark 2012 Programming in Go Creating Applications for the 21st Century Addison Wesley a b c d e Balbaert Ivo 2012 The Way to Go A Thorough Introduction to the Go Programming Language iUniverse The Evolution of Go talks golang org Diarsipkan dari versi asli tanggal 2017 01 16 Diakses tanggal 2016 03 13 Diggins Christopher 2009 11 24 Duck Typing and the Go Programming Language Dr Dobb s Diarsipkan dari versi asli tanggal 2020 08 07 Diakses tanggal 2016 03 10 Ryer Mat 2015 12 01 Duck typing in Go Diarsipkan dari versi asli tanggal 2023 06 09 Diakses tanggal 2016 03 10 The Go Programming Language Specification golang org Diarsipkan dari versi asli tanggal 2021 03 18 Diakses tanggal 2018 03 14 The Go Programming Language Specification golang org Diarsipkan dari versi asli tanggal 2021 03 18 Diakses tanggal 2018 03 14 reflect ValueOf i interface Diarsipkan 2021 07 03 di Wayback Machine converts an interface to a reflect Value that can be further inspected Go Data Structures Interfaces Diarsipkan dari versi asli tanggal 2023 07 08 Diakses tanggal 15 November 2012 The Go Programming Language Specification golang org Diarsipkan dari versi asli tanggal 2021 03 18 Diakses tanggal 2018 03 14 A Tutorial for the Go Programming Language The Go Programming Language Google Diarsipkan dari versi asli tanggal 2013 07 09 Diakses tanggal 10 March 2013 In Go the rule about visibility of information is simple if a name of a top level type function method constant or variable or of a structure field or method is capitalized users of the package may see it Otherwise the name and hence the thing being named is visible only inside the package in which it is declared go The Go Programming Language golang org Diarsipkan dari versi asli tanggal 2017 03 12 Diakses tanggal 2018 03 14 How to Write Go Code golang org Diarsipkan dari versi asli tanggal 2019 02 13 Diakses tanggal 2018 03 14 The packages from the standard library are given short import paths such as fmt and net http For your own packages you must choose a base path that is unlikely to collide with future additions to the standard library or other external libraries If you keep your code in a source repository somewhere then you should use the root of that source repository as your base path For instance if you have a GitHub account at github com user that should be your base path Go Packaging Proposal Process Diarsipkan dari versi asli tanggal 2022 04 09 Diakses tanggal 2018 03 14 a b Rob Pike Concurrency is not Parallelism Diarsipkan 2023 07 09 di Wayback Machine a b c d Kesalahan pengutipan Tag lt ref gt tidak sah tidak ditemukan teks untuk ref bernama phrasebook Effective Go golang org Diarsipkan dari versi asli tanggal 2021 02 09 Diakses tanggal 2018 03 14 The Go Memory Model Diarsipkan dari versi asli tanggal 2021 11 16 Diakses tanggal 10 April 2017 Go Concurrency Patterns golang org Diarsipkan dari versi asli tanggal 2021 02 05 Diakses tanggal 2018 03 14 John Graham Cumming Recycling Memory Buffers in Go Diarsipkan 2013 10 14 di Wayback Machine tree go Diarsipkan dari versi asli tanggal 2021 10 26 Diakses tanggal 2018 03 14 Ewen Cheslack Postava Iterators in Go Diarsipkan 2023 07 08 di Wayback Machine Brian W Kernighan A Descent Into Limbo Diarsipkan 2023 07 20 di Wayback Machine The Go Memory Model Google Diarsipkan dari versi asli tanggal 2010 11 23 Diakses tanggal 5 January 2011 a b Rujukan kosong bantuan Russ Cox Off to the Races Diarsipkan 2023 07 08 di Wayback Machine Pike Rob October 25 2012 Go at Google Language Design in the Service of Software Engineering Google Inc Diarsipkan dari versi asli tanggal 2022 07 06 Diakses tanggal 2018 03 14 There is one important caveat Go is not purely memory safe in the presence of concurrency E2E Erik Meijer and Robert Griesemer Going Go Channel 9 Microsoft 7 May 2012 Diarsipkan dari versi asli tanggal 2015 04 02 Diakses tanggal 2018 03 14 Panic And Recover Diarsipkan 2013 10 24 di Wayback Machine Go wiki Weekly Snapshot History golang org Diarsipkan dari versi asli tanggal 2017 04 03 Diakses tanggal 2018 03 14 Proposal for an exception like mechanism golang nuts 25 March 2010 Diarsipkan dari versi asli tanggal 2013 03 06 Diakses tanggal 25 March 2010 Effective Go golang org Diarsipkan dari versi asli tanggal 2015 01 06 Diakses tanggal 2018 03 14 a b Will Yager Why Go is not Good Diarsipkan 2019 07 16 di Wayback Machine Egon Elbre Summary of Go Generics discussions Diarsipkan 2023 05 21 di Wayback Machine Fitzpatrick Brad Go 90 Perfect 100 of the time Diarsipkan dari versi asli tanggal 2019 02 03 Diakses tanggal 28 January 2016 Danny Gratzer Leaving Go Diarsipkan 2016 11 03 di Wayback Machine Jared Forsyth Rust vs Go Diarsipkan 2015 05 19 di Wayback Machine Janos Dobronszki Everyday Hassles in Go Diarsipkan 2014 12 30 di Wayback Machine Rob Pike Less is exponentially more Diarsipkan 2013 11 21 di Wayback Machine The Go Authors Frequently Asked Questions FAQ Diarsipkan 2019 01 07 di Wayback Machine Rob Pike Generating code Diarsipkan 2021 08 10 di Wayback Machine Rhys Hiltner 2016 07 05 Go s march to low latency GC Twitch tv It s the story of how improvements to the Go runtime between Go 1 4 and Go 1 6 gave us a 20x improvement in garbage collection GC pause time of how we ve gotten another 10x improvement in Go 1 6 s pauses and of how sharing our experience with the Go runtime team helped them give us an additional 10x speedup in Go 1 7 while obsoleting our manual tuning pranala nonaktif permanen Richard Hudson Go 1 4 Garbage Collection GC Plan and Roadmap Hatfield Brian 2016 12 01 SUB MILLISECOND PAUSE TIME ON AN 18 GIG HEAP dalam bahasa Inggris Diarsipkan dari versi asli tanggal 2022 05 13 Diakses tanggal 2017 10 07 Effective Go golang org Diarsipkan dari versi asli tanggal 2021 02 09 Diakses tanggal 2018 03 14 LiteIDE Diarsipkan dari versi asli tanggal 2023 03 05 Diakses tanggal 2018 03 14 GoLand Diarsipkan dari versi asli tanggal 2017 11 20 Diakses tanggal 2018 03 14 nbsp Wikimedia Commons memiliki media mengenai Go programming language Pranala luar suntingSitus web resmi Dokumentasi Go Diarsipkan 2021 11 21 di Wayback Machine Blog Go Diarsipkan 2021 08 08 di Wayback Machine Paket Go Diarsipkan 2021 07 02 di Wayback Machine Repositori Go di GitHub Diperoleh dari https id wikipedia org w index php title Go bahasa pemrograman amp oldid 23970303