Sobes.tech
Junior

რა ძირითადი მონაცემთა სტრუქტურებია Go-ში?

sobes.tech AI

პასუხი AI-სგან

Go-ში არსებობს შემდეგი ძირითადი შიდა (primitive) და კომპოზიტური (composite) მონაცემთა სტრუქტურები:

შიდა:

  • ბულიანი (bool)
  • რიცხვითი ტიპები:
    • მთელი რიცხვები (int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, uintptr)
    • მერყევი წერტილის რიცხვები (float32, float64)
    • კომპლექსური რიცხვები (complex64, complex128)
    • ბაიტი (byte - псევდონიმი uint8)
    • რუნი (rune - псევდონიმი int32, წარმოადგენს Unicode სიმბოლოს)
  • სტრიქონები (string)

კომპოზიტური:

  • მასივები (array)
    • განსაზღვრული ზომით.
    var arr [5]int // 5 მთელი რიცხვიანი მასივი
    
  • სლაისები (slice)
    • დინამიური ზომა, დაფუძნებულია მასივებზე.
    var s []int // ინიციალიზებული სლაისი
    s = make([]int, 5, 10) // სლაისი სიგრძით 5 და მოცულობით 10
    
  • რუკები (map)
    • არათანაზომადი წყვილები გასაღებით და მნიშვნელობით.
    m := make(map[string]int) // რუკა, სადაც გასაღებები `string`, მნიშვნელობები `int`
    
  • სტრუქტურები (struct)
    • ტიპიზებული ველების კოლექცია.
    type Person struct {
        Name string
        Age  int
    }
    
  • პოინტერები (pointer)
    • ინახავს მეხსიერების ბლოკის მისამართს.
    var x int = 10
    var p *int = &x // p მიუთითებს x-ზე
    
  • ფუნქციები (func)
    • გოლანგში ფუნქციები პირველი კლასის ტიპებია:
    type MyFunc func(int) string // ფუნქციის ტიპი
    
  • არხები (channel)
    • გამოიყენება სინქრონიზაციისა და მონაცემთა გაცვლისთვის გორუტინებს შორის.
    ch := make(chan int) // ბუშტუკის არხი `int`-ისთვის
    
  • ინტერფეისები (interface)
    • წარმოადგენს მეთოდების კოლექციას, რომელსაც ტიპი უნდა განახორციელოს:
    type Reader interface {
        Read(p []byte) (n int, err error)
    }
    

ასევე უნდა აღინიშნოს სხვა მნიშვნელოვანი კომპოზიტური ტიპები:

  • ბაიტების სლაისი ([]byte)
  • რუნების სლაისი ([]rune)

ეს მონაცემთა სტრუქტურები უზრუნველყოფს მოქნილობას და პროდუქტიულობას Go-ში ფართო სპექტრის ამოცანებისთვის.