informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Kami telah memperkenalkan if dan for pada artikel kami sebelumnya. Ini tidak boleh dilakukan. Mari kita praktikkan cara menggunakannya.continue
Pernyataan untuk menghitung jumlah bilangan genap dalam 100. Saat kami menulis kode,continue
pernyataan ini akan membantu kita melewati iterasi tertentu yang tidak diperlukan, misalnya pada contoh ini, kita akan melewatkan semua bilangan ganjil.
- sum := 0
- for i := 1; i < 100; i++{
- if i & 1 == 0 {
- continue
- }
- sum += i
- }
-
- fmt.Println("the sum is",sum)
Dalam pemrograman, kita sering kali harus berurusan dengan sekumpulan elemen dengan tipe yang sama, dan kumpulan elemen ini diwakili oleh struktur data tertentu dalam bahasa Go. Hari ini, saya akan memperkenalkan Anda pada beberapa tipe koleksi di Go secara detail: array, irisan, dan peta.
Pertama, mari kita mulai dengan array. Array adalah struktur data paling dasar di Go. Ini adalah rangkaian elemen dengan tipe yang sama dengan panjang tetap. Setelah array dideklarasikan, panjangnya tidak dapat diubah. Deklarasi dan inisialisasi array sangat sederhana,
Saat mendeklarasikan array, Anda perlu menentukan tipe array dan panjang array. Berikut cara mendeklarasikan array:
var arrayName [arrayLength]elementType
Misalnya, deklarasikan array integer dengan panjang 5:
var numbers [5]int
Anda dapat menginisialisasi array dengan berbagai cara:
var numbers = [5]int{1, 2, 3, 4, 5}
:=
Pernyataan singkat:numbers := [5]int{1, 2, 3, 4, 5}
numbers := [...]int{1, 2, 3, 4, 5}
numbers := [5]int{0: 1, 4: 5}
Anda dapat mengakses elemen dalam array berdasarkan indeks, mulai dari 0:
value := numbers[2] // 获取索引为 2 的元素
Anda dapat gunakanfor
Ulangi semua elemen dalam array:
- for i, value := range numbers {
- fmt.Printf("Index: %d, Value: %dn", i, value)
- }
Anda dapat menggunakan yang bawaanlen
Fungsi untuk mendapatkan panjang array:
length := len(numbers)
Jika sebuah array tidak diinisialisasi secara eksplisit, elemen-elemennya secara otomatis disetel ke nilai nol dari tipenya. Misalnya, nilai nol dari array integer adalah 0:
var numbers [5]int // 所有元素都是 0
Bahasa Go juga mendukung array multidimensi. Berikut ini contoh mendeklarasikan dan menginisialisasi array integer 2x3:
- var matrix [2][3]int
- matrix = [2][3]int{{1, 2, 3}, {4, 5, 6}}
Karena panjang array tetap, hal ini mungkin tidak terlalu fleksibel dalam beberapa kasus. Jika Anda memerlukan koleksi dengan panjang variabel, Anda dapat menggunakan irisan.
Berikutnya adalah irisan, yang merupakan tipe bawaan yang lebih fleksibel yang dapat dianggap sebagai array dinamis. Panjang irisan bervariasi dan dibuat berdasarkan array, sehingga memberikan kemudahan lebih. Berikut cara mendeklarasikan dan menginisialisasi sebuah irisan:
- s := make([]int, 3) // 创建一个长度为3的整型切片
- s[0] = 1 // 切片元素赋值
- s[1] = 2
- s[2] = 3
- s = append(s, 4) // 向切片追加元素
Dalam bahasa Go, meskipun array dan irisan digunakan untuk menyimpan serangkaian elemen dengan tipe yang sama, keduanya memiliki perbedaan yang signifikan dalam alokasi memori, variabilitas ukuran, dan penggunaan. Berikut adalah perbedaan utama antara array dan irisan:
[3]int
Dan[4]int
adalah tipe yang berbeda.[]int
Apakah tipe umum untuk semua irisan bilangan bulat.make
Fungsi atau potongan dari array yang akan diinisialisasi, tidak ada ukuran yang ditentukan.Berikut adalah contoh inisialisasi untuk array dan irisan:
- // 数组
- var arr [3]int = [3]int{1, 2, 3}
-
- // 切片
- var slice []int = []int{1, 2, 3}
- // 或者使用 make 函数
- slice := make([]int, 3)
append
Fungsi menambahkan elemen, atau memperoleh subirisan melalui operasi pemotongan.Array yang mendasari irisan dapat dialokasikan di heap, dan kompleksitas waktu untuk mengakses elemen irisan juga O(1), tetapiappend
Dapat mengakibatkan realokasi array yang mendasarinya, yang biasanya merupakan operasi O(n).Terakhir, mari kita lihat pemetaan. Peta adalah array asosiatif di Go yang memetakan kunci ke nilai. Kunci peta dapat berupa jenis apa pun yang didukung oleh operator kesetaraan, seperti bilangan bulat, angka floating point, string, pointer, antarmuka (selama nilai yang terkandung dalam antarmuka sebanding), struktur, dan array. Nilai yang dipetakan dapat berupa jenis apa pun.
Sintaks untuk mendeklarasikan peta adalah sebagai berikut:
var mapName map[keyType]valueType
Misalnya, deklarasikan peta dengan kunci sebagai string dan nilai sebagai bilangan bulat:
var scores map[string]int
Setelah mendeklarasikan peta, Anda harus melewatinyamake
berfungsi untuk menginisialisasinya sehingga dapat digunakan:
scores = make(map[string]int)
Alternatifnya, Anda dapat menggunakan deklarasi singkat dan menginisialisasi:
scores := make(map[string]int)
Anda juga dapat menggunakan literal untuk inisialisasi pada saat deklarasi:
- scores := map[string]int{
- "alice": 90,
- "bob": 85,
- "charlie": 88,
- }
scores["alice"] = 90
value := scores["alice"]
Jika kunci tidak ada, nilai nol untuk tipe nilai tersebut akan dikembalikan.
Anda dapat menggunakan idiom koma -ok untuk memeriksa apakah kuncinya ada di peta:
- value, exists := scores["alice"]
- if exists {
- // 键存在
- } else {
- // 键不存在
- }
menggunakandelete
Fungsi dapat menghapus pasangan nilai kunci dari peta:
delete(scores, "alice")
Jika kuncinya tidak ada,delete
Fungsi ini tidak melakukan apa pun.
menggunakanfor
Sebuah loop dapat melintasi semua pasangan nilai kunci di peta:
- for key, value := range scores {
- fmt.Printf("%s: %dn", key, value)
- }
Nilai nol dari peta adalahnil
.satunil
Peta tidak memiliki struktur data dasar dan tidak dapat menambahkan elemen.Sebelum menambahkan elemen ke peta, Anda harus menggunakanmake
Inisialisasi itu.
Anda dapat menggunakan yang bawaanlen
Berfungsi untuk mendapatkan jumlah pasangan nilai kunci di peta:
length := len(scores)
Kunci peta dapat berupa tipe pembanding apa pun, seperti bilangan bulat, bilangan floating point, string, pointer, antarmuka (selama nilai yang terkandung dalam antarmuka sebanding), struktur, array, dll. Irisan, peta, dan fungsi tidak dapat digunakan sebagai kunci peta karena jenis ini tidak mendukung perbandingan kesetaraan.
Dalam bahasa Go, array, irisan, dan peta adalah tiga struktur data yang umum digunakan, yang masing-masing memiliki karakteristik dan pertimbangan berbeda. Berikut beberapa hal yang perlu diperhatikan saat menggunakannya:
nil
, perlu diinisialisasi sebelum digunakan.nil
,nil
Peta tidak dapat digunakan untuk menyimpan pasangan nilai kunci dan harus diinisialisasi sebelum digunakan.delete
Menghapus kunci yang tidak ada tidak menghasilkan kesalahan, namun aman untuk memeriksa apakah kunci tersebut ada.