go语言给结构体定义方法,接口,实现接口中的所有方法,调用自定义方法

接口的定义

Golang中每个接口由数个方法组成,接口的定义格式如下:

type 接口名 interface {
	方法名1(参数列表) 返回值列表
    方法名2(参数列表) 返回值列表
}

给结构体定义方法

type Phone struct {
	Name string
}
// 给Phone结构体定义一个start方法
func (p Phone) start() {
	fmt.Println(p.Name + " 开始")
}

必须要实现接口中的所有方法

如果一个结构体要实现一个接口,那么它必须实现接口中的所有方法。

package main

import (
	"fmt"
)

// 定义一个接口Usber,包含start和stop两个方法,接口是一个规范
type Usber interface {
	start()
	stop()
}

type Phone struct {
	Name string
}

// 给Phone结构体定义一个start方法
func (p Phone) start() {
	fmt.Println(p.Name + " 开始")
}

// 给Phone结构体定义一个stop方法
func (p Phone) stop() {
	fmt.Println(p.Name + " 关机")
}
func main() {
	// 实现化一个Phone结构体,实现Usber接口
	// 手机要实现usb接口的话必须得实现usb接口中的所有方法
    // 你现在把它转成接口,转成接口就没有办法调用自定义方法了
	var p1 = Usber(Phone{"小米14"})
	p1.start()
	p1.stop()
}

调用自定义方法

package main

import (
	"fmt"
)

// 定义一个接口Usber,包含start和stop两个方法,接口是一个规范
type Usber interface {
	start()
	stop()
}

type Phone struct {
	Name string
}

// 给Phone结构体定义一个start方法
func (p Phone) start() {
	fmt.Println(p.Name + " 开始")
}

// 给Phone结构体定义一个stop方法
func (p Phone) stop() {
	fmt.Println(p.Name + " 关机")
}

func (p Phone) custom() {
	fmt.Println(p.Name + " 自定义方法")
}
func main() {
	c := Phone{Name: "小米14"}
	c.custom() // 调用自定义方法

	var c1 Usber = c // 转换为接口类型
	c1.start()       // 调用接口中的方法
	c1.stop()        // 调用接口中的方法
}
posted @ 2026-10-02 11:44  何人陪我共长生  阅读(10)  评论(0)    收藏  举报