go语言中结构体是一个值类型,不是一个引用类型和既实现接口A,又实现接口B

结构体是一个值类型,不是一个引用类型

设置值和获取值

package main

import "fmt"

type Animaler interface {
	SetName(name string)
	getName() string
}

type Dog struct {
	Name string
}
func (d *Dog) SetName(name string) {
	d.Name = name
}
// 指针类型的接收者
func (d *Dog) getName() string {
	return d.Name
}
func main() {
	d := &Dog{
		Name: "旺财",
	}
	var d1 Animaler = d
	d1.SetName("小黑狗")
	fmt.Println(d1.getName())
}

既实现接口A,又实现接口B

package main

import "fmt"

// 定义一个接口 Animaler1
type Animaler1 interface {
	SetName(string)
}

// 定义一个接口 Animaler2
type Animaler2 interface {
	GetName() string
}

// 定义一个结构体 Dog
type Dog struct {
	Name string
}

// 指针类型的接收者
func (d *Dog) SetName(name string) {
	d.Name = name
}

// 值类型的接收者
func (d Dog) GetName() string {
	return d.Name
}
func main() {
	d := &Dog{
		Name: "旺财",
	}
	// 既要实现Animaler1接口,又要实现Animaler2接口
	var d1 Animaler1 = d // d1实现Animaler1接口
	var d2 Animaler2 = d // d2实现Animaler2接口
	d1.SetName("小黑狗")
	fmt.Println(d2.GetName())
}
posted @ 2026-10-04 20:38  何人陪我共长生  阅读(6)  评论(0)    收藏  举报