Jabarkan Jenis (Tipe Data) dari Go (bahasa pemrograman)

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. jenis Catatan dapat didefinisikan dengan kata kunci struct.

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.

Petunjuk tersedia untuk semua type, dan pointer-ke-T jenis dilambangkan *T. Alamat-mengambil dan tipuan gunakan & dan * operator di C, atau terjadi secara implisit melalui metode panggilan atau atribut akses sintaks. tidak Ada pointer aritmetika, kecuali melalui khusus jenis unsafe.Pointer di perpustakaan standar.

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.

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. sebagai contoh, type kata kunci yang dapat digunakan untuk mendefinisikan tipe untuk IPv4 alamat, yang adalah 32-bit unsigned integer.

Dengan jenis definisi tersebut, ipv4addr(x) menafsirkan uint32 nilai x sebagai alamat IP. Dengan menginisiasi x untuk variabel jenis ipv4addr adalah kesalahan tipe.

Ekspresi konstan dapat berupa diketik atau "untyped"; mereka diberi jenis ketika ditugaskan untuk mengetik variabel jika nilai mereka mewakili melewati waktu kompilasi cek.

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.

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.