美文网首页golang
go struct{}实现interface{}

go struct{}实现interface{}

作者: 顶尖少爷 | 来源:发表于2021-04-28 17:15 被阅读0次

    在 Go 语言中,一个 struct 实现了某个接口里的所有方法,就叫做这个 struct 实现了该接口。

    demo

    main.go

    package main
    
    import (
        "example/study/tool"
        "fmt"
    )
    
    func main()  {
        name:="Tom"
        s,err:=tool.New(name)
        if err!=nil{
            fmt.Println(err)
        }
    
        fmt.Println(s.Listen("english"))
        fmt.Println(s.Speak("english"))
        fmt.Println(s.Read("english"))
        fmt.Println(s.Write("english"))
    }
    
    

    too/too.go

    
    package tool
    
    
    import "example/pholcus/common/goutil/errors"
    
    type Study interface {
        Listen(msg string) string
        Speak(msg string) string
        Read(msg string) string
        Write(msg string) string
    }
    
    //之所以定义为私有的结构体,是因为不想在其他地方被使用,比如后面将 Name 改成 UserName 只需要在本包内修改即可。
    type study struct {
        Name string
    }
    
    
    func(s *study)Listen(msg string)string{
        return s.Name+"听"+msg
    }
    
    func(s *study)Speak(msg string)string{
        return s.Name+"说"+msg
    }
    
    func(s *study)Read(msg string)string{
        return s.Name+"读"+msg
    }
    
    func(s *study)Write(msg string)string{
        return s.Name+"写"+msg
    }
    
    func New(name string)(Study,error){
        if name==""{
            return nil,errors.New("name required")
        }
        return &study{
            Name:name,
        },nil
    }
    
    

    相关文章

      网友评论

        本文标题:go struct{}实现interface{}

        本文链接:https://www.haomeiwen.com/subject/dsovrltx.html