Junior — Middle
Ի՞նչ գործառույթ է կատարում proxy-ի դերը Go լեզվում:
sobes.tech AI
Պատասխան AI-ից
Go լեզվում չկա ներմուծված ֆունկցիա անվամբ "proxy" որպես այդպիսին։ Այնուամենայնիվ, պրոքսի սերվերի կամ պրոքսի օբյեկտի դերը սովորաբար իրականացվում է ինտերֆեյսների և կառուցվածքների միջոցով, որոնք բռնում են կանչերը և կարող են փոխել վարքագիծը:
Օրինակ, պրոքսի ստեղծելու համար կարող եք սահմանել կառուցվածք, որը պարունակում է այլ օբյեկտի հղում և իրականացնում է նույն մեթոդները՝ ավելացնելով լրացուցիչ տրամաբանություն:
type Service interface {
DoSomething() string
}
type RealService struct {}
func (r *RealService) DoSomething() string {
return "Իրական ծառայությունը ինչ-որ բան է անում"
}
// Proxy իրականացնում է նույն ինտերֆեյսը և ավելացնում տրամաբանություն
type Proxy struct {
realService Service
}
func (p *Proxy) DoSomething() string {
// Լրացուցիչ տրամաբանություն կանչից առաջ
fmt.Println("Proxy: կանչից առաջ")
result := p.realService.DoSomething()
// Լրացուցիչ տրամաբանություն կանչից հետո
fmt.Println("Proxy: կանչից հետո")
return result
}
Այսպիսով, Go-ում պրոքսի դերը իրականացնում է կոմպոզիցիայի և ինտերֆեյսների միջոցով, ոչ թե որևէ հատուկ ֆունկցիայի միջոցով։