Go (bahasa pemrograman): Perbedaan antara revisi

Konten dihapus Konten ditambahkan
v1.17
Tag: halaman dengan galat kutipan Suntingan visualeditor-wikitext
Tidak ada ringkasan suntingan
Tag: halaman dengan galat kutipan
Baris 50:
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|date=December 2016}}
 
Selain dukungan untuk [[Go (programming language)#Interfaces|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.<ref>{{Cite web|url=http://golang.org/ref/spec#Assignability|title=The Go Programming Language Specification|website=golang.org}}</ref> sebagai contoh, type kata kunci yang dapat digunakan untuk mendefinisikan tipe untuk [[Alamat IP versi 4|IPv4]] alamat, yang adalah 32-bit unsigned integer.{{Butuh rujukan|date=December 2016}}<syntaxhighlight />

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|date=December 2016}}
 
Ekspresi konstan dapat berupa diketik atau "untyped"; mereka diberi jenis ketika ditugaskan untuk mengetik variabel jika nilai mereka mewakili melewati waktu kompilasi cek.<ref>{{Cite web|url=http://golang.org/ref/spec#Constants|title=The Go Programming Language Specification|website=golang.org}}</ref>
Baris 56 ⟶ 58:
[[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.{{Butuh rujukan|date=December 2016}}
 
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.<syntaxhighlight />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.<ref>{{Cite web|url=http://golang.org/ref/spec#Calls|title=The Go Programming Language Specification|website=golang.org}}</ref>
 
==== {{Anchor|Interfaces}} Sistem antarmuka ====
Baris 65 ⟶ 67:
Yang kedua adalah ''antarmuka'', yang menyediakan runtime polimorfisme.<ref name="balbaert">{{Cite book|title=The Way to Go: A Thorough Introduction to the Go Programming Language|last=Balbaert|first=Ivo|publisher=iUniverse|year=2012}}</ref><sup>:266</sup> 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.<ref>{{Cite web|url=https://talks.golang.org/2015/gophercon-goevolution.slide#19|title=The Evolution of Go|website=talks.golang.org|access-date=2016-03-13}}</ref> Beberapa sumber yang menggunakan istilah bebek mengetik ketika menggambarkan Go antarmuka.<ref>{{Cite web|url=http://www.drdobbs.com/architecture-and-design/duck-typing-and-the-go-programming-langu/228701527|title=Duck Typing and the Go Programming Language|last=Diggins|first=Christopher|date=2009-11-24|publisher=[[Dr. Dobb's Journal|Dr. Dobb's]]|access-date=2016-03-10}}</ref><ref>{{Cite web|url=https://medium.com/@matryer/golang-advent-calendar-day-one-duck-typing-a513aaed544d#.ebm7j81xu|title=Duck typing in Go|last=Ryer|first=Mat|date=2015-12-01|access-date=2016-03-10}}</ref> 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|date=December 2016}}
 
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:<syntaxhighlight />Kedua Square dan Circle yang secara implisit Shape dan dapat ditugaskan untuk Shape-diketik variabel.{{r|balbaert}}<sup>:263–268</sup> 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.{{r|balbaert}}<sup>:270</sup>
 
Go standar perpustakaan menggunakan antarmuka untuk memberikan genericity di beberapa tempat, termasuk sistem input/output yang didasarkan pada konsep-konsep dari Reader dan Writer.{{r|balbaert}}<sup>:282–283</sup>