首页 > 解决方案 > 在 Go 中,接口是否仅由 struct 数据类型实现?

问题描述

我对 Go 很陌生,正在研究接口及其实现。我遇到的所有示例都struct{}用于实现任何接口。是否可以使用任何基本类型?

标签: go

解决方案


Go 编程语言规范

方法声明

方法是带有接收器的函数。方法声明将标识符(方法名称)绑定到方法,并将方法与接收者的基类型相关联。

接收者是通过方法名称前面的额外参数部分指定的。该参数部分必须声明一个非可变参数,即接收者。它的类型必须是 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


推荐阅读