当前位置: 首页 > 知识库问答 >
问题:

go语言接口实现错误 显示student2类型无法解析?

楚苏燕
2023-12-01
package maintype People interface {    Speak(string) string}type Student2 struct{}func (stu Stduent2) Speak(think string) (talk string) {    if think == "帅" {        talk = "你是个大帅比"    } else {        talk = "您好"    }    return}func main() {    var peo People = Student2{}    think := "bitch"    println(peo.Speak(think))}

希望输出结果是 你好

共有2个答案

谷出野
2023-12-01

注意拼写...
下面拼错了
image.png

平航
2023-12-01

在您提供的 Go 语言代码中,存在几个错误导致 "student2 类型无法解析" 的问题:

  1. Student2 方法的声明中,Stduent2 应该是 Student2
  2. Student2 结构体和方法的定义之间,应该有一个空格。

修复这些问题后的代码如下:

package maintype People interface { Speak(string) string}type Student2 struct{}func (stu Student2) Speak(think string) (talk string) { if think == "帅" { talk = "你是个大帅比" } else { talk = "您好" } return}func main() { var peo People = Student2{} think := "bitch" println(peo.Speak(think)) // 输出 "您好"}

注意:在 Go 语言中,方法的接收者(函数参数)需要明确类型,即使这个类型是接口类型。在这个例子中,Student2 实现了 People 接口,但是当我们尝试创建一个 Student2 类型的变量并赋值给 People 类型的变量时,Go 语言会报错。这是因为 Go 语言要求接口必须精确匹配。要解决这个问题,我们需要声明一个具体的类型,然后让这个类型实现 People 接口。

 类似资料:
  • 主要内容:结构体实现接口,函数体实现接口,HTTP包中的例子函数和其他类型一样都属于“一等公民”,其他类型能够实现接口,函数也可以,本节将对结构体与函数实现接口的过程进行对比。 首先给出本节完整的代码: 有如下一个接口: 这个接口需要实现 Call() 方法,调用时会传入一个 interface{} 类型的变量,这种类型的变量表示任意类型的值。 接下来,使用结构体进行接口实现。 结构体实现接口 结构体实现 Invoker 接口的代码如下: 代码说明如下:

  • 主要内容:将值保存到空接口,从空接口获取值,空接口的值比较空接口是接口类型的特殊形式,空接口没有任何方法,因此任何类型都无须实现空接口。从实现的角度看,任何值都满足这个接口的需求。因此空接口类型可以保存任何值,也可以从空接口中取出原值。 提示 空接口类型类似于 C# 或 Java 语言中的 Object、C语言中的 void*、 C++ 中的 std::any。在泛型和模板出现前,空接口是一种非常灵活的数据抽象保存和使用的方法。 空接口的内部实现保存了对

  • 本文向大家介绍Go语言接口用法实例,包括了Go语言接口用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言接口用法。分享给大家供大家参考。具体分析如下: 接口类型是由一组方法定义的集合。 接口类型的值可以存放实现这些方法的任何值。 希望本文所述对大家的Go语言程序设计有所帮助。

  • 主要内容:接口被实现的条件一:接口的方法与实现接口的类型方法格式一致,接口被实现的条件二:接口中所有方法均被实现如果一个任意类型 T 的方法集为一个接口类型的方法集的超集,则我们说类型 T 实现了此接口类型。T 可以是一个非接口类型,也可以是一个接口类型。 实现关系在Go语言中是隐式的。两个类型之间的实现关系不需要在代码中显式地表示出来。Go语言中没有类似于 implements 的关键字。 Go编译器将自动在需要的时候检查两个类型之间的实现关系。 接口定义后,需要实现接口,调用方才能正确编译通

  • 本文向大家介绍Go语言中的方法、接口和嵌入类型详解,包括了Go语言中的方法、接口和嵌入类型详解的使用技巧和注意事项,需要的朋友参考一下 概述 在 Go 语言中,如果一个结构体和一个嵌入字段同时实现了相同的接口会发生什么呢?我们猜一下,可能有两个问题: 1.编译器会因为我们同时有两个接口实现而报错吗? 2.如果编译器接受这样的定义,那么当接口调用时编译器要怎么确定该使用哪个实现? 在写了一些测试代码

  • 主要内容:一个类型可以实现多个接口,多个类型可以实现相同的接口在Go语言中类型和接口之间有一对多和多对一的关系,下面将列举出这些常见的概念,以方便读者理解接口与类型在复杂环境下的实现关系。 一个类型可以实现多个接口 一个类型可以同时实现多个接口,而接口间彼此独立,不知道对方的实现。 网络上的两个程序通过一个双向的通信连接实现数据的交换,连接的一端称为一个 Socket。Socket 能够同时读取和写入数据,这个特性与文件类似。因此,开发中把文件和 Socke