go - 在 Go 中,接口是否仅由 struct 数据类型实现?
问题描述
我对 Go 很陌生,正在研究接口及其实现。我遇到的所有示例都struct{}
用于实现任何接口。是否可以使用任何基本类型?
解决方案
方法是带有接收器的函数。方法声明将标识符(方法名称)绑定到方法,并将方法与接收者的基类型相关联。
接收者是通过方法名称前面的额外参数部分指定的。该参数部分必须声明一个非可变参数,即接收者。它的类型必须是 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
推荐阅读
- python-3.x - 根据数据更改 QTableView 小部件的水平大小
- python - 将 tf.dataset 中的每个样本映射到一个 id
- javascript - 在 Express.js 项目中放置控制器的位置
- php - 我的 SQL 函数返回正确的结果还是仅返回列中的第一个条目?
- ios - UIViewControllerRepresentable 运行时错误:已加载 Nib 但未设置视图出口。为什么?
- javascript - 为什么这个异步生成器会导致 JavaScript 运行时挂起?
- python-3.x - 解析同一目录下的多个 XML 文件
- android - 构建过程中出错:“错误:找不到符号方法 createSingle(
>)" - asynchronous - 如何在 clojurescript 中等待 cljs.core.async.impl.channels.ManyToManyChannel?
- python-3.x - 如何在 python 中调度异步函数?