Paketlar
Go dasturlash tilida paket (package) — bu ma'lum bir vazifani bajarishga mo'ljallangan funksiyalar, turlar va o'zgaruvchilar to'plamidir.
Katta loyihalarda barcha kodlarni bitta faylga yozish tartibsizlikka olib keladi. Paketlar yordamida tegishli kodlarni alohida papka va fayllarga ajratish, kodni modulli qilish va boshqa loyihalarda ham qayta ishlatish mumkin.
main paketi va dastur ijrosiGoda har bir mustaqil ishga tushuvchi dastur package main bilan boshlanadi:
package main
import "fmt"
func main() {
fmt.Println("Salom Dunyo!")
}
Qachonki Go kompilyatori package main va main() funksiyasini ko'rsa, uni mustaqil ishga tushuvchi (executable) dastur sifatida qabul qiladi.
import)Paketdagi funksiyalardan foydalanish uchun uni dasturga import qilish lozim:
// Bittalab import qilish
import "fmt"
import "math"
// Guruhlab import qilish (tavsiya etiladi)
import (
"fmt"
"math"
"strings"
)
fmt paketiMa'lumotlarni kiritish va chiqarish (I/O formatting) uchun xizmat qiladi:
package main
import "fmt"
func main() {
var number int
fmt.Print("Son kiriting: ")
fmt.Scan(&number)
fmt.Println("Kiritilgan son:", number)
fmt.Printf("O'nlik formatda: %d\n", number)
}
math paketiMurakkab matematik hisob-kitoblar uchun qo'llaniladi:
package main
import (
"fmt"
"math"
)
func main() {
// Kvadrat ildiz
fmt.Println(math.Sqrt(25)) // 5
// Kub ildiz
fmt.Println(math.Cbrt(27)) // 3
// Eng katta son
fmt.Println(math.Max(21, 18)) // 21
// Eng kichik son
fmt.Println(math.Min(21, 18)) // 18
// Qoldiqli bo'lish
fmt.Println(math.Mod(5, 2)) // 1
}
strings paketiSatrlar ustida amallar bajarish:
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.ToLower("GOLANG")) // golang
fmt.Println(strings.ToUpper("golang")) // GOLANG
words := []string{"Go", "dasturlash", "tili"}
fmt.Println(strings.Join(words, " ")) // Go dasturlash tili
}
Goda o'zingizning maxsus paketingizni yaratish juda oson.
calculator/calculator.go):package calculator
// Boshqa fayllarda ishlatilishi uchun nom katta harf bilan boshlanishi shart!
func Add(n1, n2 int) int {
return n1 + n2
}
func Subtract(n1, n2 int) int {
return n1 - n2
}
[!IMPORTANT] Go tilida paket tashqarisidan chaqirilishi kerak bo'lgan funksiya, o'zgaruvchi yoki tuzilma nomlari bosh harf bilan (Capitalized) yozilishi shart (masalan,
Add,Subtract). Kichik harf bilan yozilgan nomlar faqat o'sha paket ichida ko'rinadi (private).
main.go da ishlatish:package main
import (
"fmt"
"myproject/calculator" // Paket yo'li
)
func main() {
n1 := 9
n2 := 5
fmt.Println("Yig'indi:", calculator.Add(n1, n2)) // 14
fmt.Println("Ayirma:", calculator.Subtract(n1, n2)) // 4
}
Agar paket nomi juda uzun bo'lsa yoki nomlar to'qnashuvi yuz bersa, unga yangi qisqa nom (alias) berish mumkin:
package main
import (
"fmt"
str "strings" // strings o'rniga str taxallusidan foydalanamiz
)
func main() {
fmt.Println(str.ToUpper("godasturchi")) // GODASTURCHI
}
_)Go tili ishlatilmagan paketlarni import qilishga ruxsat bermaydi va xatolik beradi (imported and not used).
Agar paketdagi funksiyalar to'g'ridan-to'g'ri chaqirilmasa-da, faqat uning init() funksiyasi ishga tushishi talab qilinsa (masalan, ma'lumotlar bazasi drayverlari uchun), paket nomi oldiga bo'sh identifikator _ qo'yiladi:
package main
import (
"fmt"
_ "math" // math ishlatilmasa ham xatolik bermaydi
)
func main() {
fmt.Println("Go paketlari bilan ishlash")
}