我很难理解为什么这段代码无法构建。
package main
import (
"fmt"
)
type Foo interface {
Cose() string
}
type Bar struct {
cose string
}
func (b *Bar) Cose() string {
return b.cose
}
func main() {
bar := Bar{
cose: "ciaone",
}
ii, ok := bar.(Foo)
if !ok {
panic("Maronn")
}
fmt.Println(" cose : " + ii.Cose())
}
答案 0 :(得分:2)
接口是一种相反的操作 - 将接口转换为特定类型。像:
package main
import (
"fmt"
)
type Foo interface {
Cose() string
}
type Bar struct {
cose string
}
func (b *Bar) Cose() string {
return b.cose
}
func main() {
bar := Foo(&Bar{
cose: "ciaone",
})
ii, ok := bar.(*Bar)
if !ok {
panic("Maronn")
}
fmt.Println(" cose : " + ii.Cose())
}
答案 1 :(得分:1)
根据断言的类型断言,通过闭包进行操作:
package main
import (
"fmt"
)
type Foo interface {
Cose() string
}
type Bar struct {
cose string
}
func (b *Bar) Cose() string {
return b.cose
}
func main() {
bar := &Bar{
cose: "ciaone",
}
ii := func(bar interface{}) Foo {
ii, ok := bar.(Foo)
if !ok {
panic("Maronn")
}
return ii
} (bar)
fmt.Println(" cose : " + ii.Cose() )
}