<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="id">
	<id>https://wiki.unissula.ac.id/index.php?action=history&amp;feed=atom&amp;title=Go_%28bahasa_pemrograman%29</id>
	<title>Go (bahasa pemrograman) - Riwayat revisi</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.unissula.ac.id/index.php?action=history&amp;feed=atom&amp;title=Go_%28bahasa_pemrograman%29"/>
	<link rel="alternate" type="text/html" href="https://wiki.unissula.ac.id/index.php?title=Go_(bahasa_pemrograman)&amp;action=history"/>
	<updated>2026-09-16T06:00:06Z</updated>
	<subtitle>Riwayat revisi halaman ini di wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.unissula.ac.id/index.php?title=Go_(bahasa_pemrograman)&amp;diff=36924&amp;oldid=prev</id>
		<title>Maintenance script: Pembersihan konten sesuai kebijakan Wiki Unissula</title>
		<link rel="alternate" type="text/html" href="https://wiki.unissula.ac.id/index.php?title=Go_(bahasa_pemrograman)&amp;diff=36924&amp;oldid=prev"/>
		<updated>2026-09-09T06:24:32Z</updated>

		<summary type="html">&lt;p&gt;Pembersihan konten sesuai kebijakan Wiki Unissula&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;id&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Revisi sebelumnya&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revisi per 9 September 2026 06.24&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l204&quot;&gt;Baris 204:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Baris 204:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Yang pertama adalah &amp;#039;&amp;#039;embedding&amp;#039;&amp;#039;, yang dapat dilihat sebagai bentuk otomatis dari komposisi atau delegasi.&amp;lt;ref&amp;gt;Mark Summerfield. &amp;#039;&amp;#039;Programming in Go: Creating Applications for the 21st Century&amp;#039;&amp;#039;. Addison-Wesley. 2012.&amp;lt;/ref&amp;gt;&amp;lt;sup&amp;gt;:255&amp;lt;/sup&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Yang pertama adalah &amp;#039;&amp;#039;embedding&amp;#039;&amp;#039;, yang dapat dilihat sebagai bentuk otomatis dari komposisi atau delegasi.&amp;lt;ref&amp;gt;Mark Summerfield. &amp;#039;&amp;#039;Programming in Go: Creating Applications for the 21st Century&amp;#039;&amp;#039;. Addison-Wesley. 2012.&amp;lt;/ref&amp;gt;&amp;lt;sup&amp;gt;:255&amp;lt;/sup&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Yang kedua adalah &#039;&#039;antarmuka&#039;&#039;, yang menyediakan runtime polimorfisme.&amp;lt;ref&amp;gt;Ivo Balbaert. &#039;&#039;The Way to Go: A Thorough Introduction to the Go Programming Language&#039;&#039;. iUniverse. 2012.&amp;lt;/ref&amp;gt;&amp;lt;sup&amp;gt;:266&amp;lt;/sup&amp;gt; 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.&amp;lt;ref&amp;gt;[https://talks.golang.org/2015/gophercon-goevolution.slide#19 The Evolution of Go]. &#039;&#039;talks.golang.org&#039;&#039;.&amp;lt;/ref&amp;gt; Beberapa sumber yang menggunakan istilah bebek mengetik ketika menggambarkan Go antarmuka.&amp;lt;ref&amp;gt;Christopher Diggins. [http://www.drdobbs.com/architecture-and-design/duck-typing-and-the-go-programming-langu/228701527 Duck Typing and the Go Programming Language]. Dr. Dobb&#039;s. 2009-11-24.&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Mat Ryer. [https://medium.com/@matryer/golang-advent-calendar-day-one-duck-typing-a513aaed544d#.ebm7j81xu Duck typing in Go]. 2015-12-01.&amp;lt;/ref&amp;gt; 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 &#039;&#039;pengetikan&#039;&#039; &#039;&#039;struktural&#039;&#039;.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;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.&amp;lt;sup&amp;gt;:263–268&amp;lt;/sup&amp;gt; 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.&amp;lt;sup&amp;gt;:270&amp;lt;/sup&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;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.&amp;lt;sup&amp;gt;:263–268&amp;lt;/sup&amp;gt; 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.&amp;lt;sup&amp;gt;:270&amp;lt;/sup&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://wiki.unissula.ac.id/index.php?title=Go_(bahasa_pemrograman)&amp;diff=429&amp;oldid=prev</id>
		<title>Maintenance script: Presentation V4: sitasi, referensi, Math, Wikimedia Commons, dan atribusi</title>
		<link rel="alternate" type="text/html" href="https://wiki.unissula.ac.id/index.php?title=Go_(bahasa_pemrograman)&amp;diff=429&amp;oldid=prev"/>
		<updated>2026-08-23T03:13:52Z</updated>

		<summary type="html">&lt;p&gt;Presentation V4: sitasi, referensi, Math, Wikimedia Commons, dan atribusi&lt;/p&gt;
&lt;a href=&quot;https://wiki.unissula.ac.id/index.php?title=Go_(bahasa_pemrograman)&amp;amp;diff=429&amp;amp;oldid=130&quot;&gt;Lihat perubahan&lt;/a&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://wiki.unissula.ac.id/index.php?title=Go_(bahasa_pemrograman)&amp;diff=130&amp;oldid=prev</id>
		<title>Maintenance script: Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 29515649; atribusi sumber disertakan.</title>
		<link rel="alternate" type="text/html" href="https://wiki.unissula.ac.id/index.php?title=Go_(bahasa_pemrograman)&amp;diff=130&amp;oldid=prev"/>
		<updated>2026-08-23T02:20:12Z</updated>

		<summary type="html">&lt;p&gt;Impor teks terkontrol dari Wikipedia bahasa Indonesia; revisi 29515649; atribusi sumber disertakan.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Halaman baru&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Go&amp;#039;&amp;#039;&amp;#039; (sering disebut sebagai &amp;#039;&amp;#039;&amp;#039;Golang&amp;#039;&amp;#039;&amp;#039;) adalah [[bahasa pemrograman]] yang dibuat di [[Google]] pada tahun 2009 oleh [[Robert Griesemer]], [[Rob Pike]], dan [[Ken Thompson]]. Go adalah bahasa pemrograman [[sumber terbuka]] yang mudah, sederhana, efisien. Selain itu, Go merupakan bahasa pemrograman yang dikompilasi, seperti [[Java]], yaitu bahasa pemrograman [[Kompilator|yang dikompilasi]] dan menggunakan [[Sintaksis|sintaks]] mirip bahasa [[C (bahasa pemrograman)|C]], dengan fitur [[Pengumpulan sampah (ilmu komputer)|pengumpulan sampah]], penulisan terstruktur, keamanan memori, dan pemrograman yang konkuren serta berurutan. [[Kompilator|Kompiler]] dan Integrated Development Environment (IDE) lainnya disediakan oleh [[Google]] dari awal secara [[Perangkat lunak bebas|bebas]] dan [[sumber terbuka]].&lt;br /&gt;
&lt;br /&gt;
== Sejarah ==&lt;br /&gt;
Golang pertama kali dirilis pada bulan November 2009 dan telah digunakan di lingkungan produksi oleh Google maupun perusahaan lain.&lt;br /&gt;
&lt;br /&gt;
Dua implementasi utama yang ada:&lt;br /&gt;
* Google Go [[Kompilator|compiler]], &amp;quot;gc&amp;quot;, yang dikembangkan sebagai [[perangkat lunak sumber terbuka]]. Pihaknya menargetkan berbagai platform, termasuk [[Linux]], [[MacOS|OS X]], [[Microsoft Windows|Windows]], berbagai [[Berkeley Software Distribution|BSD]] dan [[Unix]] versi, dan juga (sejak 2015) perangkat selular (termasuk [[ponsel cerdas|ponsel pintar]]).&lt;br /&gt;
* Kompiler kedua, gccgo, merupakan &amp;#039;&amp;#039;front-end&amp;#039;&amp;#039; GCC.&lt;br /&gt;
&amp;quot;Gc&amp;quot; rantai alat telah &amp;#039;&amp;#039;self-hosting&amp;#039;&amp;#039; sejak versi 1.5.&lt;br /&gt;
&lt;br /&gt;
Go awalnya merupakan sebuah percobaan oleh para [[Rekayasawan|insinyur]] Google Robert Griesemer, Rob Pike, dan [[Ken Thompson]] untuk merancang sebuah bahasa pemrograman baru yang dapat mengatasi berbagai kritik umum terhadap bahasa lain, sambil tetap mempertahankan karakteristik positifnya.&lt;br /&gt;
&lt;br /&gt;
Dalam pengembangannya, mereka mempertimbangkan berbagai karakteristik  yang terdapat pada bahasa pemrograman lain, seperti:&lt;br /&gt;
* bertipe statis, skalabel untuk [[sistem]] yang besar (seperti [[Java]] dan [[C++]])&lt;br /&gt;
* produktif serta mudah dibaca tanpa memerlukan [[kata kunci]] dan pengulangan kode (&amp;quot;light on the page&amp;quot; seperti [[Bahasa pemrograman dinamis|bahasa dinamis]])&lt;br /&gt;
* tidak memerlukan [[Lingkungan pengembangan terpadu|lingkungan pengembangan terintegrasi]], tetapi mendukung mereka dengan baik&lt;br /&gt;
* mendukung jaringan dan &amp;#039;&amp;#039;multiprocessing&amp;#039;&amp;#039;&lt;br /&gt;
Dalam wawancara terakhir, semua dari tiga perancang bahasa tidak suka terhadap kompleksitas C++ sehingga menjadi [[motivasi]] utama untuk mendesain sebuah bahasa baru.&lt;br /&gt;
&lt;br /&gt;
Google merilis Go 1.0 pada bulan Maret 2012.&lt;br /&gt;
&lt;br /&gt;
===Versi===&lt;br /&gt;
Go 1 menjamin kompatibilitas untuk spesifikasi bahasa dan bagian utama dari pustaka standar. Semua versi hingga perilisan Go 1.19 saat telah menepati janji ini.&lt;br /&gt;
&lt;br /&gt;
Setiap perilisan utama Go didukung hingga ada dua perilisan utama yang lebih baru.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Desain bahasa ==&lt;br /&gt;
Go lebih dikenal sebagai bagian dari tradisi [[C (bahasa pemrograman)|C]], namun menghadirkan banyak perubahan untuk meningkatkan efisiensi, kesederhanaan, dan keamanan. Go terdiri dari:&lt;br /&gt;
* Sintaks dan lingkungan mengadopsi pola-pola yang lebih umum dalam [[Bahasa pemrograman dinamis|bahasa dinamis]]:&lt;br /&gt;
** Opsional ringkas variabel deklarasi dan inisialisasi melalui jenis inferensi (&amp;lt;code&amp;gt;x := 0&amp;lt;/code&amp;gt; tidak &amp;lt;code&amp;gt;int x = 0;&amp;lt;/code&amp;gt; atau &amp;lt;code&amp;gt;var x = 0;&amp;lt;/code&amp;gt;).&lt;br /&gt;
** Kompilasi cepat.&lt;br /&gt;
** Manajemen paket jarak jauh (&amp;lt;code&amp;gt;go get&amp;lt;/code&amp;gt;) dan paket dokumentasi daring.&lt;br /&gt;
* Khas pendekatan untuk masalah tertentu:&lt;br /&gt;
** Fasilitas konkruensi bawaan: proses ringan (&amp;#039;&amp;#039;lightweight process&amp;#039;&amp;#039;), saluran, dan yang &amp;lt;code&amp;gt;memilih&amp;lt;/code&amp;gt; pernyataan.&lt;br /&gt;
** Sebuah antarmuka sistem di tempat virtual warisan, dan jenis &amp;#039;&amp;#039;embedding&amp;#039;&amp;#039; bukan non-virtual warisan.&lt;br /&gt;
** Sebuah toolchain yang, secara &amp;#039;&amp;#039;default&amp;#039;&amp;#039;, menghasilkan biner asli yang ditautkan secara statis tanpa dependensi eksternal.&lt;br /&gt;
* Spesifikasi bahasa dirancang agar cukup sederhana sehingga dapat dipahami secara menyeluruh oleh seorang [[Pemrogram|&amp;#039;&amp;#039;programmer&amp;#039;&amp;#039;]], di bagian dengan menghilangkan fitur-fitur umum untuk bahasa yang sama.&lt;br /&gt;
&lt;br /&gt;
=== Sintaks ===&lt;br /&gt;
Sintaks Go meliputi perubahan dari C bertujuan menjaga kode ringkas dan mudah dibaca. Gabungan deklarasi/inisialisasi operator diperkenalkan yang memungkinkan programmer untuk menulis &amp;lt;code&amp;gt;saya := 3&amp;lt;/code&amp;gt; atau &amp;lt;code&amp;gt;s := &amp;quot;Hello, world!&amp;quot;&amp;lt;/code&amp;gt;, tanpa menentukan jenis variabel. Ini kontras dengan C &amp;lt;code&amp;gt;int i = 3;&amp;lt;/code&amp;gt; dan &amp;lt;code&amp;gt;const char *s = &amp;quot;Hello, world!&amp;quot;;&amp;lt;/code&amp;gt;. Titik koma masih menghentikan pernyataan, tetapi secara implisit ketika akhir baris yang terjadi. Fungsi dapat mengembalikan beberapa nilai-nilai, dan mengembalikan &amp;lt;code&amp;gt;result, err&amp;lt;/code&amp;gt; pasangan adalah cara konvensional yang berfungsi menunjukkan kesalahan untuk penelepon di Go. Go menambahkan sintaks literal untuk menginisialisasi struct parameter dengan nama, dan untuk inisialisasi peta dan irisan. Sebagai alternatif untuk C tiga pernyataan &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; loop, Ekspresi Go &amp;lt;code&amp;gt;range&amp;lt;/code&amp;gt; memungkinkan ringkas iterasi lebih dari [[Larik|array]], irisan, [[string]], peta, dan saluran.&lt;br /&gt;
&lt;br /&gt;
=== Jenis (Tipe Data) ===&lt;br /&gt;
Go memiliki sejumlah [[tipe data]] bawaan yang ditanamkan, termasuk numerik (byte, int64, float32, dll.), [[Aljabar Boole|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. [[Record|jenis Catatan]] dapat didefinisikan dengan kata kunci struct.&lt;br /&gt;
&lt;br /&gt;
Untuk masing-masing tipe &amp;#039;&amp;#039;T&amp;#039;&amp;#039; dan setiap non-negatif konstanta integer &amp;#039;&amp;#039;n&amp;#039;&amp;#039;, ada sebuah [[Larik|array]] jenis dilambangkan [&amp;#039;&amp;#039;n&amp;#039;&amp;#039;]&amp;#039;&amp;#039;T&amp;#039;&amp;#039;; [[Larik|array]] yang berbeda-beda panjangnya sehingga dari jenis yang berbeda. [[Larik|Array]] dinamis yang tersedia sebagai &amp;quot;iris&amp;quot;, dilambangkan []&amp;#039;&amp;#039;T&amp;#039;&amp;#039; untuk beberapa jenis &amp;#039;&amp;#039;T&amp;#039;&amp;#039;. Ini memiliki panjang dan &amp;#039;&amp;#039;kapasitas&amp;#039;&amp;#039; menentukan ketika baru memori yang harus dialokasikan untuk memperluas [[Larik|array]]. Beberapa irisan dapat berbagi mereka mendasari memori.&lt;br /&gt;
&lt;br /&gt;
Petunjuk tersedia untuk semua type, dan inter-ke-&amp;#039;&amp;#039;T&amp;#039;&amp;#039; jenis dilambangkan *&amp;#039;&amp;#039;T&amp;#039;&amp;#039;. Alamat-mengambil dan tipuan gunakan &amp;amp; dan * operator di C, atau terjadi secara implisit melalui metode panggilan atau atribut akses sintaks. tidak Ada [[Penunjuk (ilmu komputer)|pointer]] aritmetika, kecuali melalui khusus jenis unsafe.[[Penunjuk (ilmu komputer)|Pointer]] di perpustakaan standar.&lt;br /&gt;
&lt;br /&gt;
Untuk pasangan dari jenis &amp;#039;&amp;#039;K&amp;#039;&amp;#039;, &amp;#039;&amp;#039;V&amp;#039;&amp;#039;, jenis map[&amp;#039;&amp;#039;K&amp;#039;&amp;#039;]&amp;#039;&amp;#039;V&amp;#039;&amp;#039; adalah jenis [[tabel hash]] memetakan tipe-&amp;#039;&amp;#039;K&amp;#039;&amp;#039; kunci untuk tipe-&amp;#039;&amp;#039;V&amp;#039;&amp;#039; nilai-nilai. Tabel Hash yang dibangun ke dalam bahasa, dengan sintaks khusus dan built-in fungsi. chan &amp;#039;&amp;#039;T&amp;#039;&amp;#039; adalah &amp;#039;&amp;#039;saluran&amp;#039;&amp;#039; yang memungkinkan pengiriman nilai-nilai dari tipe &amp;#039;&amp;#039;T&amp;#039;&amp;#039; antara bersamaan Go proses.&lt;br /&gt;
&lt;br /&gt;
Selain dukungan untuk [[Go (programming language)#Interfaces|antarmuka]], Go tipe sistem adalah nominal: type kata kunci yang dapat digunakan untuk mendefinisikan baru &amp;#039;&amp;#039;bernama jenis&amp;#039;&amp;#039;, 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 (ilmu komputer)|integer]]) pra-didefinisikan dan menambahkan jenis baru dapat menentukan konversi tambahan, tapi konversi antara nama jenis harus selalu dipanggil secara eksplisit. sebagai contoh, type kata kunci yang dapat digunakan untuk mendefinisikan tipe untuk [[Alamat IP versi 4|IPv4]] alamat, yang adalah 32-bit unsigned integer.&lt;br /&gt;
&lt;br /&gt;
Dengan jenis definisi tersebut, ipv4addr(x) menafsirkan uint32 nilai x sebagai [[alamat IP]]. Menginisiasialisasi variabel bertipe ipv4addr menggunakan nilai yang tidak sesuai akan menghasilkan kesalahan tipe.&lt;br /&gt;
&lt;br /&gt;
Ekspresi konstan dapat berupa diketik atau &amp;quot;untyped&amp;quot;; mereka diberi jenis ketika ditugaskan untuk mengetik variabel jika nilai mereka mewakili melewati waktu kompilasi cek.&lt;br /&gt;
&lt;br /&gt;
[[Subrutin|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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
====  Sistem antarmuka ====&lt;br /&gt;
Go menyediakan dua fitur yang menggantikan kelas warisan.&lt;br /&gt;
&lt;br /&gt;
Yang pertama adalah &amp;#039;&amp;#039;embedding&amp;#039;&amp;#039;, yang dapat dilihat sebagai bentuk otomatis dari komposisi atau delegasi.&amp;lt;sup&amp;gt;:255&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yang kedua adalah &amp;#039;&amp;#039;antarmuka&amp;#039;&amp;#039;, yang menyediakan runtime polimorfisme.&amp;lt;sup&amp;gt;:266&amp;lt;/sup&amp;gt; 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. Beberapa sumber yang menggunakan istilah bebek mengetik ketika menggambarkan Go antarmuka. 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 &amp;#039;&amp;#039;pengetikan&amp;#039;&amp;#039; &amp;#039;&amp;#039;struktural&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
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.&amp;lt;sup&amp;gt;:263–268&amp;lt;/sup&amp;gt; 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.&amp;lt;sup&amp;gt;:270&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Go standar perpustakaan menggunakan antarmuka untuk memberikan genericity di beberapa tempat, termasuk sistem input/output yang didasarkan pada konsep-konsep dari Reader dan Writer.&amp;lt;sup&amp;gt;:282–283&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Selain memanggil metode melalui antarmuka, Go memungkinkan mengubah antarmuka nilai-nilai untuk jenis lain dengan run-time type check. Bahasa konstruksi untuk melakukannya adalah &amp;#039;&amp;#039;jenis pernyataan&amp;#039;&amp;#039;, yang memeriksa terhadap satu potensi jenis, dan &amp;#039;&amp;#039;jenis switch&amp;#039;&amp;#039;, yang memeriksa terhadap beberapa jenis.&lt;br /&gt;
&lt;br /&gt;
Yang &amp;#039;&amp;#039;kosong antarmuka&amp;#039;&amp;#039; &amp;lt;code&amp;gt;interface{}&amp;lt;/code&amp;gt; adalah sudut yang penting kasus ini karena hal ini dapat merujuk ke item dari &amp;#039;&amp;#039;setiap&amp;#039;&amp;#039; jenis beton. Hal ini mirip dengan Object class dalam [[Java]] atau [[C sharp|C#]] dan puas dengan jenis apa pun, termasuk built-in jenis seperti int.&amp;lt;sup&amp;gt;:284&amp;lt;/sup&amp;gt; Kode menggunakan kosong interface tidak hanya memanggil metode (atau built-in operator) yang disebut-objek, tetapi dapat menyimpan &amp;lt;code&amp;gt;interface{}&amp;lt;/code&amp;gt; nilai, cobalah untuk mengubahnya menjadi lebih berguna melalui jenis jenis pernyataan atau jenis switch, atau periksa dengan Go &amp;lt;code&amp;gt;mencerminkan&amp;lt;/code&amp;gt; paket. Karena &amp;lt;code&amp;gt;interface{}&amp;lt;/code&amp;gt; dapat merujuk ke nilai apapun, itu adalah cara yang terbatas untuk melarikan diri dari batasan-batasan statis mengetik, seperti &amp;lt;code&amp;gt;void*&amp;lt;/code&amp;gt; di C tapi dengan tambahan run-time type pemeriksaan.&lt;br /&gt;
&lt;br /&gt;
Antarmuka nilai-nilai yang diimplementasikan dengan menggunakan [[Penunjuk (ilmu komputer)|pointer]] ke data dan [[Penunjuk (ilmu komputer)|pointer]] ke run-time jenis informasi. Seperti beberapa jenis lain diimplementasikan dengan menggunakan pointer pada Go, antarmuka nilai-nilai &amp;lt;code&amp;gt;nihil&amp;lt;/code&amp;gt; jika tidak terinisialisasi.&lt;br /&gt;
&lt;br /&gt;
=== Sistem paket ===&lt;br /&gt;
Dalam sistem paket go, setiap paket memiliki pola (misalnya, &amp;lt;code&amp;gt;&amp;quot;compress/bzip2&amp;quot;&amp;lt;/code&amp;gt; atau &amp;lt;code&amp;gt;&amp;quot;golang.org/x/net/html&amp;quot;&amp;lt;/code&amp;gt;) dan nama (misalnya, &amp;lt;code&amp;gt;bzip2&amp;lt;/code&amp;gt; atau &amp;lt;code&amp;gt;html&amp;lt;/code&amp;gt;). Secara default, definisi dari paket lain harus selalu diawali dengan nama paket lain tersebut, dan hanya paket dengan nama diawali kapital yang bisa diakses di paket lain: &amp;lt;code&amp;gt;io.Reader&amp;lt;/code&amp;gt; umum tapi &amp;lt;code&amp;gt;bzip2.reader&amp;lt;/code&amp;gt; tidak. Perintah &amp;lt;code&amp;gt;go get&amp;lt;/code&amp;gt; dapat mengambil paket yang disimpan dalam repositori jauh seperti [[GitHub]], 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.&lt;br /&gt;
&lt;br /&gt;
Proposal yang ada untuk memperkenalkan tepat paket solusi manajemen untuk Go mirip dengan [[Rust (bahasa pemrograman)|Karat]]&amp;#039;s sistem cargo atau [[Node.js|Node]]&amp;#039;s npm sistem.&lt;br /&gt;
&lt;br /&gt;
===  Concurrency: goroutines dan channel ===&lt;br /&gt;
Bahasa go memiliki built-in fasilitas, serta dukungan perpustakaan, untuk menulis program yang konkuren. Konkurensi mengacu tidak hanya untuk pararelisme CPU , tetapi juga untuk asynchrony: membiarkan operasi lambat seperti database atau jaringan dijalankan saat program melakukan pekerjaan lain, seperti yang umum dalam program server.&lt;br /&gt;
&lt;br /&gt;
Model konkurensi primer go adalah &amp;#039;&amp;#039;goroutine&amp;#039;&amp;#039;, suatu jenis green threads. Suatu fungsi yang dipanggil dengan kata kunci go akan memulai fungsi tersebut di goroutine baru. Bahasa spesifikasi tidak menentukan bagaimana goroutines harus dilaksanakan, tetapi saat ini implementasi multipleks Go proses ini goroutines ke satu set yang lebih kecil dari [[Utas (komputer)|sistem operasi benang]], mirip dengan penjadwalan yang dilakukan dalam Erlang.&amp;lt;sup&amp;gt;:10&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sementara standar perpustakaan menampilkan paket yang paling klasik concurrency control struktur (mutex kunci, dll.) tersedia,&amp;lt;sup&amp;gt;:151–152&amp;lt;/sup&amp;gt; idiomatik bersamaan program bukan sukai &amp;#039;&amp;#039;saluran&amp;#039;&amp;#039;, yang memberikan mengirim pesan antara goroutines. Opsional buffer menyimpan pesan di [[FIFO]] order&amp;lt;sup&amp;gt;:43&amp;lt;/sup&amp;gt; dan memungkinkan mengirim goroutines untuk melanjutkan sebelum mereka menerima pesan.&lt;br /&gt;
&lt;br /&gt;
Saluran yang diketik, sehingga saluran dari jenis chan &amp;#039;&amp;#039;T&amp;#039;&amp;#039; hanya dapat digunakan untuk mentransfer pesan dari tipe &amp;#039;&amp;#039;T&amp;#039;&amp;#039;. Sintaks khusus yang digunakan untuk beroperasi pada mereka; &amp;lt;-ch adalah ekspresi yang menyebabkan melaksanakan goroutine untuk memblokir sampai nilai datang di channel ch, sedangkan ch &amp;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 [[Go (programming language)#Concurrency example|di bawah]] untuk contoh. Go memiliki memori model yang menggambarkan bagaimana goroutines harus menggunakan saluran atau operasi lainnya untuk aman berbagi data.&lt;br /&gt;
&lt;br /&gt;
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.&amp;lt;sup&amp;gt;:147&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dari 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, &amp;quot;fan-out&amp;quot; panggilan paralel untuk satu set layanan, dan lain-lain. Saluran juga telah ditemukan menggunakan lebih dari biasanya gagasan interprocess communication, seperti melayani sebagai concurrency-daftar aman dari daur ulang buffer, pelaksana coroutines (yang membantu menginspirasi nama &amp;#039;&amp;#039;goroutine&amp;#039;&amp;#039;), dan menerapkan iterator.&lt;br /&gt;
&lt;br /&gt;
Konvensi struktural terkait konkurensi dari Go (saluran dan alternatif channel input) yang berasal dari [[C.A.R. Hoare|Tony Hoare yang]] berkomunikasi berurutan proses model. Tidak seperti sebelumnya serentak bahasa pemrograman seperti Occam atau Limbo (pekerjaan bahasa co-desainer Go Rob Pike ), Go tidak menyediakan built-in gagasan aman atau diverifikasi concurrency. 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 , di bawah ini.&lt;br /&gt;
&lt;br /&gt;
==== Kesesuaian untuk pemrograman paralel ====&lt;br /&gt;
Meskipun &amp;#039;&amp;#039;Go concurrency&amp;#039;&amp;#039; fitur yang tidak ditujukan terutama untuk [[Komputasi paralel|pemrosesan paralel]], mereka dapat digunakan untuk program memori bersama [[Multipengolahan|multi-prosesor]] mesin. Berbagai studi telah dilakukan untuk keefektifan pendekatan ini. 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 [[Algoritma|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.&lt;br /&gt;
&lt;br /&gt;
==== Kurangnya kondisi balapan keselamatan ====&lt;br /&gt;
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 &amp;#039;&amp;#039;struktur data internal&amp;#039;&amp;#039; 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.&lt;br /&gt;
&lt;br /&gt;
Bukannya dukungan bahasa, aman concurrent programming dengan demikian bergantung pada konvensi; misalnya, Chisnall merekomendasikan sebuah ungkapan yang disebut &amp;quot;alias xor bisa berubah&amp;quot;, yang berarti bahwa yang lewat bisa berubah nilai (atau [[Penunjuk (ilmu komputer)|pointer]]) melalui saluran sinyal yang mentransfer kepemilikan atas nilai kepada penerima.&amp;lt;sup&amp;gt;:155&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kelalaian ===&lt;br /&gt;
Go sengaja menghilangkan fitur-fitur tertentu yang umum dalam bahasa lain, termasuk (implementasi) warisan, pemrograman generik, pernyataan, [[Penunjuk (ilmu komputer)|pointer]] aritmetika, dan konversi tipe implisit.&lt;br /&gt;
&lt;br /&gt;
Dari fitur bahasa ini, penulis menyampaikan keterbukaan untuk pemrograman generik, secara tegas membantah pernyataan dan [[Penunjuk (ilmu komputer)|pointer]]&amp;lt;nowiki&amp;gt; aritmetika, saat membela pilihan untuk menghilangkan jenis warisan sebagai pemberian yang lebih berguna bahasa, mendorong alih-alih menggunakan antarmuka untuk mencapai dinamis pengiriman&lt;br /&gt;
&lt;br /&gt;
== Sumber dan atribusi ==&lt;br /&gt;
&lt;br /&gt;
Artikel ini diadaptasi dalam mode teks dari&lt;br /&gt;
[https://id.wikipedia.org/w/index.php?title=Go_%28bahasa_pemrograman%29&amp;amp;oldid=29515649 Wikipedia bahasa Indonesia],&lt;br /&gt;
revisi 29515649 (2026-08-02T11:46:48Z).&lt;br /&gt;
Gambar, media, infobox, templat navigasi, dan kategori sumber&lt;br /&gt;
tidak diimpor ke Wiki Unissula.&lt;br /&gt;
Atribusi dan lisensi mengikuti ketentuan Creative Commons&lt;br /&gt;
Atribusi-BerbagiSerupa (CC BY-SA) pada sumber Wikipedia.&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>