Sobes.tech
Junior — Middle

Оё имкон дорад, ки функсионалияти бастаи стандартиро бо илова кардани усулҳои худ васеъ кунем?

sobes.tech AI

Ҷавоб аз AI

Дар Go, шумо наметавонед мустақиман усулҳоро ба намудҳои пакетҳои стандартӣ илова кунед, агар ин намудҳо дар пакети дигар муайян карда шудаанд. Аммо, шумо метавонед намудҳои худро бар асоси намудҳои мавҷуда (бо истифода аз alias-и навъи ё навъи нав) эҷод кунед ва ба намудҳои нав илова кунед.

Масалан:

package main

import (
    "fmt"
    "strings"
)

type MyString string

func (s MyString) Reverse() string {
    runes := []rune(string(s))
    for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
        runes[i], runes[j] = runes[j], runes[i]
    }
    return string(runes)
}

func main() {
    var s MyString = "hello"
    fmt.Println(s.Reverse()) // olleh
}

Инчунин, функсионалӣ кардани намудҳои стандартӣ тавассути wrappers имконпазир аст, аммо на тавассути илова кардани методҳо ба намудҳои пакетҳои стандартӣ.