golang

go struct{}实现interface{}

2021-04-28  本文已影响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
}

上一篇 下一篇

猜你喜欢

热点阅读