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

Golang 语法系列:结构体

结构体:相当于"类"

1.结构体声明

type [name] struct {[field_name] [field_type][field_name] [field_type]...
}//例子:type Person struct {name stringage int
}其中field_name可以省略

2.结构体的使用

1) 格式1

var person Person
person.name = "jack"
person.age = 10

2)格式2:通过键值对声明

person := Person{name: "jack",age: 12,  // 这里的逗号要加
}

// name age字段可以省略

3)格式3:匿名结构体

person := Person{name stringage int}{name:"jack",age:12,
}

4)格式4:通过new()函数实例化

var person = new(Person)    //@doto new()返回的是结构体变量的地址
fmt.Println(&person)        //0xc000006028
fmt.Println(person)         //&{}

5)格式5:通过&运算符直接对结构体进行取地址操作,然后完成实例化

person := &Person{}
person.name = "xxx"//@todo 说明:其实格式4,5,最合适的方式是通过 (*person).name = "xxx" 去赋值,只是Go语言自动帮助我们完成从地址取值的操作

3.结构体的构造方法

以上面的Person为例子,其实是通过一个函数来返回一个结构体指针实现的

func newPerson(name string, age int) *Person {return &Person {name: name,age: age,}
}//main()方法中可以这样调用
p := newPerson("jack", 10)

4.结构体的方法(其实不限于结构体,比如可以为string添加)

通过接受者Receiver实现,方法的格式如下:

func (struct_var_name StructName) 函数名(params)(return_type) {
}例子:func (p Person) eat(food string) {
}p := newPerson("jack", 10)
p.eat("鱼")

5.结构体的嵌套


type Person struct {name stringage intbodyInfo BodyInfo
}type BodyInfo struct {weight float64height float64
}p := Person{name: "jack",age: 10,bodyInfo: BodyInfo{weight: 100height: 170}
}p.bodyInfo.weight //@todo 访问嵌套结构体的属性

6. 结构体的继承

type Dog struct {age intanimal *Animal
}type Cat struct {age intanimal *Animal
}type Animal struct {name string
}dog := &Dog{age: 12,animal: &Animal{name: "myDog"}
}

相关文章:

Golang 语法系列:结构体

结构体:相当于"类" 1.结构体声明 type [name] struct {[field_name] [field_type][field_name] [field_type]... }//例子:type Person struct {name stringage int }其中field_name可以省略 2.结构体的使用 1) 格式1 var person Person p…...

关于iPad中的密码和触控ID的使用,看这篇文章就差不多了

序言 许多苹果iPad型号都有熟悉的密码系统和触控ID,这需要指纹扫描才能解锁设备。本指南向你展示如何使用iPad Air 2或更高版本、iPad Mini 3或更新版本以及iPad Pro设置或更改密码和触控ID指纹。 一些iPad Pro型号支持面部识别,并配备了面容ID而不是触控ID作为安全功能。面…...

Vue3之ref与reactive的基本使用

ref可以创建基本类型、对象类型的响应式数据 reactive只可以创建对象类型的响应式数据 接下来让我为大家介绍一下吧! 在Vue3中,我们想让数据变成响应式数据,我们需要借助到ref与reactive 先为大家介绍一下ref如何使用还有什么注意点 我们需…...

wsl内置Ubuntu使用 Dinky 与 Flink 集成

Dinky 与 Flink 集成 说明 本文档介绍 Dinky 与 Flink 集成的使用方法, 如果您是 Dinky 的新用户, 请先阅读 本文档, 以便更好的搭建 Dinky 环境 如果您已经熟悉 Dinky 并已经部署了 Dinky, 请跳过本文档的前置要求部分, 直接阅读 Dinky 与 Flink 集成部分 注意: 本文档基…...

”戏说“ 交换机 与 路由器

一般意义上说 老哥 这文章发表 的 东一榔头 西一锤 呵呵, 想到哪里就啰嗦到哪里 。 交换机: 其实就是在通道交换 路由器: 不光是在通道交换还要在协议上交换 下图你看懂了吗? (仅仅数据交换-交换机 协议…...

Linux pageset

1. 引言 在用户进程发生缺页异常时,Linux内核需要分配所需物理页面以及建立也表映射,来维持进程的正常内存使用需求。而对于分配物理页面仅依赖于buddy系统,对于小order页面的分配效率较低。因此Linux通过在每个cpu维护一个page链表&#xff…...

【C++之语法篇003】

C学习笔记---003 C知识开篇1、内联函数1.1、什么是内联函数?1.2、解决外部头文件,重复定义问题1.3、内联函数的总结 2、auto关键字2.1、auto的作用2.2、auto的总结 3、范围for3.1、什么是范围for?3.2、范围for的循环应用 4、指针空值关键字nullptr4.1、…...

Github代码仓库SSH配置流程

作者: Herman Ye Auromix 测试环境: Ubuntu20.04 更新日期: 2024/02/21 注1: Auromix 是一个机器人爱好者开源组织。 注2: 由于笔者水平有限,以下内容可能存在事实性错误。 相关背景 在为Github代码仓库配…...

Arrays工具类的常见方法总结

一、Arrays.asList( ) 1.作用&#xff1a;Arrays.asList( )方法的作用是将数组转换成List&#xff0c;将List中的全部集合对象添加至ArrayList集合中 2.参数&#xff1a;动态参数 (T... a) 3.返回值&#xff1a;List 集合 List<T> 4.举例&#xff1a; package com…...

物联网和人工智能的融合

物联网和人工智能的融合 1. 物联网和人工智能的融合2. 芯片技术的进步3. 安全和隐私保护挑战4. 软件开发和调试技术的创新5. 自动化和智能化趋势 1. 物联网和人工智能的融合 随着物联网和人工智能技术的快速发展&#xff0c;嵌入式系统将更多地与物联网设备和人工智能算法相结…...

【微信小程序】wxss 和 css 、wxml 和 html 区别

wxss 和 css 区别 wxss 支持小程序特有的选择器和 样式属性 scroll-into-view cover-view 等wxss 引入了 rpx 单位&#xff0c;可以根据屏幕宽度进行自适应&#xff0c;使得开发者可以更方便的处理不同尺寸屏幕的适配问题。wxss 背景图片只能引入外链&#xff0c;不能使用本地…...

python统计分析——使用AIC进行模型选择

参考资料&#xff1a;用python动手学统计学 1、导入库 # 导入库 # 用于数值计算的库 import numpy as np import pandas as pd import scipy as sp from scipy import stats # 用于绘图的库 import matplotlib.pyplot as plt import seaborn as sns sns.set() # 用于估计统计…...

Android 11以上获取不到第三方app是否安装

开年第一篇&#xff0c;处理了一下年前的小问题。 问题&#xff1a;本地app跳转到第三方app地图进行导航&#xff0c;获取不到第三方地图是否安装。 解决&#xff1a; 1.添加包名 This can be done by adding a <queries> element in the Android manifest.在app下的…...

Java的编程之旅24——private私有方法

1.private的介绍 在面向对象编程中&#xff0c;private是一种访问修饰符&#xff0c;用于限制成员的访问范围。私有成员只能在所属的类内部访问&#xff0c;对外部的类或对象是不可见的。 private的使用可以带来以下几个好处&#xff1a; 封装实现细节&#xff1a;私有成员可…...

为什么在MOS管开关电路设计中使用三极管容易烧坏?

MOS管作为一种常用的开关元件&#xff0c;具有低导通电阻、高开关速度和低功耗等优点&#xff0c;因此在许多电子设备中广泛应用。然而&#xff0c;在一些特殊情况下&#xff0c;我们需要在MOS管控制电路中加入三极管来实现一些特殊功能。然而&#xff0c;不同于MOS管&#xff…...

CSS的注释:以“ /* ”开头,以“ */ ”结尾

CSS的注释:以“ /* ”开头&#xff0c;以“*/”结尾 CSS的注释: 以“ /* ”开头&#xff0c;以“ */ ”结尾 在CSS中&#xff0c;注释是一种非常重要的工具&#xff0c;它们可以帮助开发者记录代码的功能、用法或其他重要信息。这些信息对于理解代码、维护代码以及与他人合作都…...

MySQL中常见的几种日志类型【重点】

在MySQL中&#xff0c;有几种不同类型的日志&#xff0c;用于记录数据库的活动和操作&#xff0c;以便于故障排查、性能调优和数据恢复等目的。以下是MySQL中常见的几种日志类型&#xff1a; 错误日志&#xff08;Error Log&#xff09;&#xff1a; 错误日志记录了MySQL服务器…...

odoo16-API(Controller)带有验证访问的接口

odoo16-API&#xff08;Controller&#xff09;带有验证访问的接口 目前我使用odoo原生的登录token来验证登陆的有效性 废话不多说直接上代码 # 测试获取session_id import requests class GetOdooData(http.Controller):def getOdooToken(self):# http://localhost:8123访问…...

Eclipse项目间的引用

我们在开发的时候&#xff0c;有时候需要把一个大的项目打散&#xff0c;尤其是现在微服务的架构很流行&#xff0c;一个大的项目往往被拆成很多小的项目&#xff0c;而有的项目作为公共工程被独立出来&#xff0c;比如有个工程专门提供各种Util工具类&#xff0c;有的工程专门…...

matplotlib使用案例3:通过自定义图例类实现图例的任意方向(行 or 列)的排列

这个方法的核心依然是基于matplotlib.legend._get_legend_handles_labels函数。然后将得到的handlers, labels进行重排,使得即使再调用Legend类的绘制方法对图例进行列排列,最终的效果也是图例的行显示,如[1、2、3、4、5、6],当指定ncols=2,Legend类的绘制方法得到的图例如…...

Midjourney × CLO 3D无缝协同方案(工业级打版前必读):实现AI草图→虚拟缝合→力学模拟零损转换

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Midjourney CLO 3D无缝协同方案&#xff08;工业级打版前必读&#xff09;&#xff1a;实现AI草图→虚拟缝合→力学模拟零损转换 在高精度服装数字样衣开发流程中&#xff0c;Midjourney生成的创意草图常因缺…...

顶尖销售都在读什么?这三本书揭示理解客户的奥秘

优秀销售真正厉害的地方&#xff0c;不是把产品硬推给别人&#xff0c;而是能够理解客户真正的需求&#xff0c;并让客户相信&#xff1a;你是在帮他解决问题&#xff0c;而不是单纯想把东西卖出去。 而要真正提升销售能力&#xff0c;读几本值得反复看的经典书籍&#xff0c;…...

别再死记硬背公式了!用‘推磨小矮人’和‘磁极跳舞’理解PMSM的电角度与机械角度

用“推磨小矮人”和“磁极跳舞”轻松掌握PMSM角度转换 电机控制领域的初学者常被永磁同步电机&#xff08;PMSM&#xff09;中电角度与机械角度的关系困扰。传统教材中“电角度极对数机械角度”的公式虽然简洁&#xff0c;却缺乏直观的物理图像支撑。本文将用两个生活化的比喻…...

别再只用SSH了!深入对比新华三设备Telnet的三种认证模式(None/Password/AAA)及适用场景

新华三设备Telnet认证模式深度解析&#xff1a;从安全权衡到场景适配 在网络设备管理的工具箱里&#xff0c;远程访问协议的选择往往决定了运维效率和安全性之间的平衡点。作为网络管理员&#xff0c;我们常常陷入这样的困境&#xff1a;是选择便捷性还是安全性&#xff1f;是追…...

无需电荷泵的高边开关:IRLML6401TRPBF在便携设备电源管理中的简化设计

IRLML6401TRPBF&#xff1a;SOT-23封装P沟道功率MOSFET的开关应用解析在便携式电子设备、电源管理以及电池保护电路中&#xff0c;PCB面积的限制往往与功率处理能力形成矛盾。设计师需要在有限的板级空间内实现高效的电源路径切换和负载管理。IRLML6401TRPBF是英飞凌&#xff0…...

Perplexity语言学习资源深度测评(2024Q2最新版):92%的学习者不知道的5个隐藏功能与3倍提效配置

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Perplexity语言学习资源概览与核心价值定位 Perplexity 作为一款以“实时、可溯源、推理驱动”为设计哲学的AI问答工具&#xff0c;正迅速成为语言学习者构建语境化知识体系的关键基础设施。它并非传统…...

Day1 搭建环境+理解编译过程+helloworld

一、为什么要学 C 性能强悍 1. 手动内存管理 C 允许开发者精确控制内存的分配与释放时机。&#xff08;Java、Python 等语言依赖垃圾回收机制&#xff08;GC&#xff09;自动管理内存&#xff0c;但 GC 的触发时机不可预测&#xff0c;带来的程序的短暂停顿在游戏、机器人控制…...

告别外挂SDRAM!用SWM34SRET6这颗内置8MB内存的MCU驱动4.3寸屏,成本直降

告别外挂SDRAM&#xff01;用SWM34SRET6这颗内置8MB内存的MCU驱动4.3寸屏&#xff0c;成本直降 在嵌入式显示项目中&#xff0c;驱动TFT-LCD屏幕往往需要搭配外置SDRAM芯片来满足帧缓冲需求。这不仅增加了BOM成本&#xff0c;还占用了宝贵的PCB面积&#xff0c;更让布线复杂度直…...

RT-Thread软定时器漂移问题深度解析与实战优化

1. 项目概述&#xff1a;从一次线上告警说起那天下午&#xff0c;系统监控平台突然弹出一连串的告警&#xff0c;核心业务模块的周期性任务执行间隔出现了肉眼可见的抖动&#xff0c;从预期的100毫秒&#xff0c;漂移到了130毫秒甚至更长。排查了一圈硬件、中断和任务调度&…...

2026年数字人拍摄新方式:一条视频能省多少时间

2026年数字人拍摄新方式&#xff1a;一条视频能省多少时间 【导语】 做视频最耗时间的是什么&#xff1f;不是拍摄那几分钟&#xff0c;而是前期的准备工作。但现在有一种新方式&#xff0c;可以让你完全不用拍摄真人&#xff0c;一条视频从准备到成片&#xff0c;最快只要7分钟…...