20 / 68

String

Satrlar

Go dasturlash tilida satr (string) — bu belgilar (harflar, raqamlar, belgilar) ketma-ketligidir. Masalan, "Golang" satri G, o, l, a, n, g belgilaridan tashkil topgan.

Goda satrlar qo'shtirnoq "" yoki teskari tirnoq (backtick) ` ichida yoziladi.


1. Satr yaratish

example.go
// var yordamida
var message1 = "Salom"

// Qisqa e'lon qilish yordamida
message2 := "Go Dasturchi"

Teskari tirnoq (Backtick `) bilan yozish:

Teskari tirnoq bir nechta qatorli matnlarni yoki maxsus belgilarni o'zgarishsiz saqlashda qulay:

example.go
package main

import "fmt"

func main() {
    message := `Go dasturlash tilini
o'rganish juda qiziqarli!`
    fmt.Println(message)
}

2. Satr belgilariga indeks orqali murojaat qilish

Satr indekslari massivlar kabi 0 dan boshlanadi:

example.go
package main

import "fmt"

func main() {
    name := "Golang"

    // 0-indeksdagi belgi (G)
    fmt.Printf("%c\n", name[0])

    // 3-indeksdagi belgi (a)
    fmt.Printf("%c\n", name[3])

    // Oxirgi belgi (g)
    fmt.Printf("%c\n", name[5])
}

Natija:

kod
G
a
g

[!NOTE] Belgini to'g'ri ko'rsatish uchun fmt.Printf bilan %c format spetsifikatoridan foydalandik. Agar fmt.Println(name[0]) deb yozilsa, uning baytdagi ASCII son qiymati (masalan, 71) chiqadi.

Eslab qoling, satr indeksi doim 0 dan boshlanadi, 1 dan emas.

Goda satrning har bir belgisiga indeks orqali murojaat qilish


3. Satr uzunligini aniqlash (len())

Satrdagi belgilar (baytlar) sonini aniqlash uchun len() funksiyasi ishlatiladi:

example.go
package main

import "fmt"

func main() {
    message := "Go Dasturchi"
    fmt.Println("Satr uzunligi:", len(message))
}

Natija:

kod
Satr uzunligi: 12

4. Satrlarni birlashtirish (+ operatori)

Ikki yoki undan ortiq satrni birlashtirish (konkatenatsiya) uchun + operatoridan foydalanish mumkin:

example.go
package main

import "fmt"

func main() {
    message1 := "Men"
    message2 := "Go tilini o'rganayapman"

    result := message1 + " " + message2
    fmt.Println(result)
}

Natija:

kod
Men Go tilini o'rganayapman

5. strings paketi va uning asosiy funksiyalari

Goning standart strings paketi satrlar bilan ishlash uchun ko'plab foydali metodlarni taqdim etadi. Ulardan foydalanish uchun kod boshida import "strings" yoziladi:

1. strings.Compare() — Satrlarni solishtirish

Ikki satrni leksikografik (alifbo bo'yicha) solishtiradi:

  • -1: Birinchi satr ikkinchisidan kichik bo'lsa
  • 0: Satrlar teng bo'lsa
  • 1: Birinchi satr ikkinchisidan katta bo'lsa
example.go
package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.Compare("Olma", "Olxo'ri")) // -1
    fmt.Println(strings.Compare("Olma", "Olma"))    // 0
    fmt.Println(strings.Compare("Uzum", "Anor"))    // 1
}

2. strings.Contains() — Qism-satr mavjudligini tekshirish

Satr ichida berilgan so'z yoki belgi bor-yo'qligini aniqlaydi (true yoki false):

example.go
package main

import (
    "fmt"
    "strings"
)

func main() {
    text := "Go Programming"

    fmt.Println(strings.Contains(text, "Go"))     // true
    fmt.Println(strings.Contains(text, "Python")) // false
}

3. strings.Replace() — Belgini almashtirish

example.go
strings.Replace(satr, eski, yangi, almashtirish_soni)
example.go
package main

import (
    "fmt"
    "strings"
)

func main() {
    text := "mashina"

    // Faqat 1 marta 'a' harfini 'o' ga almashtiramiz
    result := strings.Replace(text, "a", "o", 1)
    fmt.Println(result) // moshina
}

4. strings.ToUpper() va strings.ToLower() — Harflar registrini o'zgartirish

example.go
package main

import (
    "fmt"
    "strings"
)

func main() {
    text := "Go Dasturlash Tili"

    fmt.Println(strings.ToUpper(text)) // GO DASTURLASH TILI
    fmt.Println(strings.ToLower(text)) // go dasturlash tili
}

5. strings.Split() — Satrni bo'laklarga ajratish

Satrni ko'rsatilgan ajratuvchi bo'yicha bo'laklab, slays (slice) ko'rinishida qaytaradi:

example.go
package main

import (
    "fmt"
    "strings"
)

func main() {
    message := "Men Go tilini yaxshi ko'raman"

    words := strings.Split(message, " ")
    fmt.Println(words) // [Men Go tilini yaxshi ko'raman]
}

6. strings.Join() — Slays elementlarini bitta satrga birlashtirish

example.go
package main

import (
    "fmt"
    "strings"
)

func main() {
    words := []string{"Go", "juda", "tez", "ishlaydi"}

    sentence := strings.Join(words, " ")
    fmt.Println(sentence) // Go juda tez ishlaydi
}

6. Satrlarni == operatori orqali tenglikka tekshirish

Satrlarning aynan tengligini tekshirish uchun == operatori yetarli. Satrlar harf-katta kichikligiga sezgir (case-sensitive) hisoblanadi:

example.go
package main

import "fmt"

func main() {
    s1 := "Golang"
    s2 := "golang"

    fmt.Println(s1 == s2) // false
}

7. Satr bo'ylab sikl aylanish (for range)

for range sikli satrning har bir belgisi (rune) bo'yicha aylanib chiqadi:

example.go
package main

import "fmt"

func main() {
    text := "Go"

    for _, ch := range text {
        fmt.Printf("%c\n", ch)
    }
}

Natija:

kod
G
o

8. Maxsus escape belgilar (Escape Characters)

Agar satr ichida qo'shtirnoq, yangi qator yoki tabulyatsiya ishlatish kerak bo'lsa, maxsus \ (teskari slesh) belgisidan foydalaniladi:

  • \" — qo'shtirnoq belgisining o'zi
  • \n — yangi qatorga o'tish
  • \t — tabulyatsiya (gorizontal bo'sh joy tashlash)
  • \\ — teskari slesh belgisining o'zi
example.go
package main

import "fmt"

func main() {
    message := "Bu dars \"Go Satrlar\" haqida.\nKeyingi qatordan davom etadi."
    fmt.Println(message)
}

9. Goda satrlar o'zgarmasdir (Strings are Immutable)

Go dasturlash tilida satrlar o'zgarmas (immutable) hisoblanadi. Ya'ni, yaratilgan satrning alohida belgilarini to'g'ridan-to'g'ri o'zgartirib bo'lmaydi:

example.go
message := "Salom"
message[0] = 'X' // XATOLIK! Satr elementiga qiymat tayinlab bo'lmaydi

Agar satrga boshqa matn qo'shsak (message = message + " Dunyo"), Go asl satrni o'zgartirmaydi, balki xotirada mutlaqo yangi satr yaratib, uni message o'zgaruvchisiga o'zlashtiradi.