接口是否只能在Go中由struct数据类型实现?

时间:2018-12-21 12:35:47

标签: go

我刚接触Go,当时正在研究接口及其实现。 我遇到的所有示例都使用struct{}来实现任何接口。 可以使用任何基本类型吗?

1 个答案:

答案 0 :(得分:4)

  

The Go Programming Language Specification

     

Method declarations

     

方法是具有接收器的函数。方法声明绑定了   标识符,方法名称,方法,并将该方法关联   带有接收者的基本类型。

     

接收器是通过在   方法名称。该参数部分必须声明一个非变量   参数,接收者。其类型必须为T或* T   (可能使用括号),其中T是类型名称。表示的类型   用T表示的是接收方基本类型;它不能是指针或   接口类型,它必须与   方法。据说该方法绑定到基本类型和方法   名称仅在类型T或* T的选择器中可见。


不。它可以是指针或接口类型以外的任何其他类型。


例如,使用string作为基础类型,

package main

import (
    "fmt"
    "strings"
)

type Caser interface {
    Upper() string
    Lower() string
}

type Str string

func (s Str) Upper() string {
    return strings.ToUpper(string(s))
}

func (s Str) Lower() string {
    return strings.ToLower(string(s))
}

func main() {
    str := Str("Forty-Two")
    fmt.Println(str)
    up := str.Upper()
    fmt.Println(up)
    lo := str.Lower()
    fmt.Println(lo)
}

游乐场:https://play.golang.org/p/9RDRTftqWot

输出:

Forty-Two
FORTY-TWO
forty-two