Go Language Interface Compliance Compile Type Check
In Go deklariert die Anweisung „var x interface{}“ eine Variable x vom Typ interface {}, das Werte jeden Typs enthalten kann. Beim Zuweisen eines Werts zu einer Schnittstellenvariablen prüft der Compiler jedoch, ob der Typ des zugewiesenen Werts der Definition der Schnittstelle entspricht.
In dem von Ihnen bereitgestellten Beispiel:
var ( _ blobref.StreamingFetcher = (*CachingFetcher)(nil) _ blobref.SeekFetcher = (*CachingFetcher)(nil) _ blobref.StreamingFetcher = (*DiskCache)(nil) _ blobref.SeekFetcher = (*DiskCache)(nil) )
die Anweisungen Stellen Sie sicher, dass CachingFetcher und DiskCache die öffentlichen Methoden der StreamingFetcher- und SeekFetcher-Schnittstellen implementieren. Das Präfix „_ blobref.StreamingFetcher“ gibt an, dass der CachingFetcher-Typ die StreamingFetcher-Schnittstelle erfüllt. Diese Prüfung ist wichtig, um sicherzustellen, dass diese Typen korrekt in Code verwendet werden können, der Typen erwartet, die diese Schnittstellen implementieren.
Der RHS-Teil dieser Anweisungen verwendet eine Zeigerkonstruktorsyntax mit einem Nullparameter. In diesem Fall stellt „(T)(nil)“ einen typisierten Nullwert dar, der verwendet wird, um anzugeben, dass der Nullwert einer Variablen vom Typ T zugewiesen werden soll. Die folgende Anweisung deklariert beispielsweise einen Zeiger auf eine StreamingFetcher-Schnittstelle mit einem Nullwert:
var fetcher *blobref.StreamingFetcher = (*blobref.StreamingFetcher)(nil)
Diese Syntax ist eine praktische Möglichkeit, einen Zeiger auf eine Schnittstelle zu erstellen und sicherzustellen, dass der Nullwert korrekt zugewiesen wird.
Das obige ist der detaillierte Inhalt vonWie stellt Go die Schnittstellenkonformität durch Typprüfung zur Kompilierungszeit sicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!