/
githubmirror
/
go
Обзор
Документация
Войти
/
githubmirror
/
go
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/ken/interfun.go
59 строк
872 B
Rob Pike
test: document ken/*.go
24 фев 2012, 09:24
24 фев 2012, 09:24
eb37b5b
Код
Авторство
О чём код?
// run // Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Test interfaces and methods. package main type S struct { a,b int; } type I1 interface { f ()int; } type I2 interface { g() int; f() int; } func (this *S) f()int { return this.a; } func (this *S) g()int { return this.b; } func main() { var i1 I1; var i2 I2; var g *S; s := new(S); s.a = 5; s.b = 6; // call structure if s.f() != 5 { panic(11); } if s.g() != 6 { panic(12); } i1 = s; // convert S to I1 i2 = i1.(I2); // convert I1 to I2 // call interface if i1.f() != 5 { panic(21); } if i2.f() != 5 { panic(22); } if i2.g() != 6 { panic(23); } g = i1.(*S); // convert I1 to S if g != s { panic(31); } g = i2.(*S); // convert I2 to S if g != s { panic(32); } }