当前位置: 首页 > news >正文

go类(结构体)和对象

结构体

  1. 结构体定义的函数分为值接收者方法和指针接收者方法
    • 调用方式:
      • 使用值接收者的方法可以通过值或指针调用。
      • 使用指针接收者的方法必须通过指针调用。(不对,值对象调用指针方法时会自动转化为指针对象,所以使用指针接收者的方法可以通过值或指针调用)
    • 方法内部对接收者的修改:
      • 如果方法需要修改接收者的值,则必须使用指针接收者。
      • 如果方法不需要修改接收者,可以使用值接收者。
type Person struct {   name string  }
func (p Person) Speak1() string {  return "Hello, my name is " + p.name } 
func (p *Person) Speak2() string {  return "Hello, my name is " + p.name } 
pp:=Person{"my_name"}
pp.Speak1()  // 正确
pp.Speak2()  // 错误

实例化

  1. 结构体实例化对象方式:
    • 直接通过结构体名和字段名初始化,返回值类型
    • 直接new,返回指针类型
    • 对于复杂的类,写一个NewStructname() *Structname函数来实例化,类似于构造函数(工厂模式)
    • 先声明结构体变量,再逐个字段赋值
    • 直接创建匿名结构体的实例,无需提前定义结构体类型,适用于一次性使用的简单数据

继承

  1. go里面的继承其实是组合。
type Animal struct {  Name string  } 
type Dog struct {  Animal    // 嵌入(继承) Animal 类型  Breed     string  
}  
  1. 继承方式
    • 指针继承
    • 值继承
type Animal struct {}func (a *Animal) Speak() {fmt.Println("Animal speaks")
}type Cat struct {*Animal
}type Cat struct {  // 无法调用Speak方法,因为Speak方法是指针接收者方法Animal
}

http://www.mrgr.cn/news/92935.html

相关文章:

  • 快速排序算法详解
  • 项目准备(flask+pyhon+MachineLearning)- 3
  • (下:补充——五个模型的理论基础)深度学习——图像分类篇章
  • DeepSeek如何快速开发PDF转Word软件
  • Android 应用开发中,证书、签名和加固简述
  • 本地部署SenseVoice(包括离线设备操作)
  • CSS定位详解上
  • Python 字典与集合:从入门到精通的全面解析
  • 一个py文件搞定mysql查询+Json转换+表数据提取+根据数据条件生成excel文件+打包运行一条龙
  • 【2025.3.02更新】Linkreate wordperssAI插件,定时自动生成文章、图片、长尾关键词、视频,网站AI客服、批量采集文章。新增接入硅基流动图片生成免费API
  • JavaWeb后端基础(3)
  • 【星云 Orbit • STM32F4】06. 串口密码:USART 数据传递
  • Vscode通过Roo Cline接入Deepseek
  • 【文献阅读】Collective Decision for Open Set Recognition
  • 河南理工XCPC萌新选拔赛
  • Vue3国际化开发实战:i18n-Ally + vue-i18n@next高效配置教程,项目中文显示
  • 【软考-架构】1.2、指令系统-存储系统-cache
  • python django
  • 蓝桥备赛(六)- C/C++输入输出
  • 【Python 数据结构 1.零基础复习】