我很难理解为什么无法构建此代码。

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())
}

最佳答案

接口(interface)是相反的操作-将接口(interface)转换为特定类型。喜欢:

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())
}

演示:https://play.golang.org/p/ba7fnG9Rjn

关于go - ./main.go :23:15: invalid type assertion: bar.(Foo)(非接口(interface)类型,位于左侧的栏),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47475756/

10-09 12:46