go 接口interface func (m Market) getName() string {

跟Java不同点:

  1. struct 实现 interface,并没有明显的实现写法,各写各的

  2. struct 可以实现部分interface的方法,而不必要全部实现。直接用没问题,用interface进行引用就报错:

示例代码:

Go 复制代码
// 包路径
package main

import "fmt"

// 接口有两个方法
type Animal interface {
    call()
    getName() string
}

// 创建类Market,有一个name熟悉
type Market struct {
    name string
}

/**
  实现方法:
  1. (m Market): 标识 这个是Market类的方法
  2. call() 接口的方法
*/
func (m Market) call() {
    fmt.Println("market call,", "name:", m.name)
}

func (m Market) getName() string {
    return m.name
}

type Tiger struct {
    name string
}

func (t Tiger) call() {
    fmt.Println("tiger call,", "name:", t.name)
}

func (t Tiger) getName() string {
    return t.name
}

func animalCall(a Animal) {
    a.call()
}

// 空接口,可以接受任何类型的对象,并根据类型判断
func print(v interface{}) {
    switch t := v.(type) {
    case int:
        fmt.Println("integer", t)
    case string:
        fmt.Println("string", t)
    }
}

//  main方法
func main() {
    
    // 接口 interface
    m1 := Market{name: "m111"}
    fmt.Println(m1.getName())
    m1.call()
    
    m2 := new(Market)
    m2.name = "m222"
    m2.call()
    
    t1 := Tiger{name: "t1111"}
    fmt.Println(t1.getName())
    t1.call()
    
    // 根据传值的不同
    animalCall(m1)
    animalCall(t1)
    
    // 定义一个接口,然后复制类对象,按照接口调用就可以
    var a1 Animal
    a1 = m1
    a1.call()
    
    // 将m1转换为 Market类型
    m11 := a1.(Market)
    fmt.Println(m11.name)
    
    // 空接口接受人任何对象
    print(11)
    print("str11")
    
}
相关推荐
百锦再1 小时前
第11章 泛型、trait与生命周期
android·网络·人工智能·python·golang·rust·go
芳草萋萋鹦鹉洲哦1 小时前
【Windows】tauri+rust运行打包工具链安装
开发语言·windows·rust
权泽谦1 小时前
R Shiny 交互式网页实战:从零到上线可视化应用
开发语言·信息可视化·r语言
hweiyu001 小时前
Go Fiber 简介
开发语言·后端·golang
你的人类朋友4 小时前
😎 Node.js 应用多阶段构建 Dockerfile 详解
后端·docker·容器
小坏讲微服务4 小时前
Spring Boot整合Redis注解,实战Redis注解使用
spring boot·redis·分布式·后端·spring cloud·微服务·mybatis
ᐇ9594 小时前
Java LinkedList集合全面解析:双向链表的艺术与实战
java·开发语言·链表
码银4 小时前
【数据结构】顺序表
java·开发语言·数据结构
橘子海全栈攻城狮4 小时前
【源码+文档+调试讲解】基于Spring Boot的考务管理系统设计与实现 085
java·spring boot·后端·spring
追逐时光者4 小时前
一个基于 .NET 8 + DDD 搭建的模块化微服务框架
后端·.net