Junior — Middle
Kā noteikt, vai konkrēta klase vai objekts īsteno noteiktu interfeisu?
sobes.tech AI
Atbilde no AI
Go valodā saskarnes tiek realizētas netieši: ja tips realizē visas saskarnes metodes, tas automātiski tiek uzskatīts par šo saskarni realizējošu.
Lai pārbaudītu, vai konkrēts tips realizē saskarni, jūs varat izmantot tipu apgalvojumu (type assertion) vai mēģināt piešķirt šī tipa vērtību saskarnes tipa mainīgajam.
Piemērs:
package main
import "fmt"
type Reader interface {
Read(p []byte) (n int, err error)
}
type MyReader struct {}
func (r MyReader) Read(p []byte) (n int, err error) {
return 0, nil
}
func main() {
var r Reader
var mr MyReader
// Pārbaude – vai realizē saskarni, piešķirot
r = mr // ja MyReader nerealizē Reader, būs kompilācijas kļūda
// Pārbaude, izmantojot tipu apgalvojumu
if _, ok := interface{}(mr).(Reader); ok {
fmt.Println("MyReader realizē Reader saskarni")
} else {
fmt.Println("MyReader nerealizē Reader saskarni")
}
}