go_细节注意
go细节
- 一、使用指针接受者和不使用指针接受者
- 1,不使用指针接受者:
- 2,使用指针接受者
- 3,区别与优劣势
一、使用指针接受者和不使用指针接受者
1,不使用指针接受者:
func (d dog) move() {fmt.Println("狗会动")
}
func main() {var x Movervar wangcai = dog{} // 旺财是dog类型x = wangcai // x可以接收dog类型var fugui = &dog{} // 富贵是*dog类型x = fugui // x可以接收*dog类型x.move()
}
- move 方法使用了值接收者 dog,这意味着它可以被任何 dog 类型的实例调用。
- 在 main 函数中,x 可以接收 dog 类型的值,也可以接收 *dog 类型的指针。然而,在将 wangcai 赋值给 x 时,Go 会自动进行值到指针的转换,因此这里的代码仍然可以编译通过。
2,使用指针接受者
func (d *dog) move() {fmt.Println("狗会动")
}
func main() {var x Movervar wangcai = dog{} // 旺财是dog类型x = wangcai // x不可以接收dog类型var fugui = &dog{} // 富贵是*dog类型x = fugui // x可以接收*dog类型
}
- move 方法使用了指针接收者 *dog,这意味着它只能被 *dog 类型的指针调用。
- 在 main 函数中,将 wangcai 赋值给 x 就会导致编译错误,因为 wangcai 是一个 dog 类型的值,而 x 要求接收 *dog 类型的指针。只有当将 fugui 赋值给 x 时,代码才能编译通过。
3,区别与优劣势
-
调用方式不同:
值接收者方法可以被实例值调用,也可以被指针调用,而指针接收者方法只能被指针调用。
值接收者方法在调用时会隐式地将实例值复制一份,而指针接收者方法在调用时操作的是同一个实例,不会产生副本。 -
修改对象:
使用指针接收者方法可以修改对象的状态,因为它们直接操作实例,而值接收者方法只能修改副本的状态,不会影响原始实例。 -
性能和开销:
值接收者方法会产生一份实例的拷贝,可能导致内存和性能开销。
指针接收者方法直接操作实例,避免了拷贝,通常更高效。
选择使用哪种接收者取决于你的需求和设计目标: -
如果方法需要修改对象的状态或者需要操作对象的指针,使用指针接收者。
如果方法不需要修改对象状态,使用值接收者,这样可以避免不必要的指针操作和副本创建。
相关文章:
go_细节注意
go细节 一、使用指针接受者和不使用指针接受者1,不使用指针接受者:2,使用指针接受者3,区别与优劣势 一、使用指针接受者和不使用指针接受者 1,不使用指针接受者: func (d dog) move() {fmt.Println("…...
屏蔽恶意域名的DNS查询
因为有一些恶意域名, 已经在防火墙上做了封禁了, 但是如果收到中毒主机的请求, 还是要去做一次DNS查询, 因此被上级单位通告, 因此想把恶意域名的DNS查询封禁做到防火墙下联的AC上面, 一方面因为防火墙的策略优先级DNS代理比较靠后, 另一方面也是为了减小防火墙压力, 简化配置:…...
SQL-每日一题【1251. 平均售价】
题目 Table: Prices Table: UnitsSold 编写SQL查询以查找每种产品的平均售价。average_price 应该四舍五入到小数点后两位。 查询结果格式如下例所示: 解题思路 1.题目要求查询每种产品的平均售价。给出了两个表,我们用聚合查询来解决此问题。 2.首先我…...
Win11中使用pip或者Cython报错 —— error: Microsoft Visual C++ 14.0 is required.
第一步:下载Visual Studio 2019 下载地址: https://learn.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes 第二步:安装组件 选择单个组件,勾选以下两个组件 其他错误: 无法打开文件“python37.li…...
Spring学习笔记之Bean的“出生入死”
文章目录 什么是Bean的生命周期为什么要知道Bean的生命周期Bean的生命周期之五个阶段Bean生命周期之七个阶段Bean生命周期的十个阶段Bean的作用域不同,管理方式不同自己new的对象如何让Spring管理 什么是Bean的生命周期 Spring其实就是一个管理Bean对象的工厂。它负…...
hbase 报错 Master passed us a different hostname to use; was=
原因 wsl2的 /etc/hosts 配置的不兼容,我这里是ubuntu22 命令行输入hostname 看输出什么,比如输出 aaa 那么替换/etc/hosts 127.0.0.1 aaa...
Aspera替代方案:探索这些安全且可靠的文件传输工具
科技的发展日新月异,文件的传输方式也在不断地更新换代。传统的邮件附件、FTP等方式已经难以满足人们对于传输速度和安全性的需求了。近年来,一些新兴的文件传输工具受到了人们的关注,其中除了知名的Aspera之外,还有许多可靠安全的…...
你真的了解数据结构与算法吗?
数据结构与算法,是理论和实践必须紧密结合的一门学科,有关数据结构和算法同类的课程或书籍,有些只是名为“数据结构”,而非“数据结构与算法”,它们在内容上并无很大区别。 实际上,数据结构和算法…...
kafka使用心得(一)
kafka入门 一种分布式的、基于发布/订阅的消息系统,scala编写,具备快速、可扩展、可持久化的特点。 基本概念 topic 主题 partition 分区,一个topic下可以有多个partition,消息是分散到多个partition里存储的,part…...
Django图书商城系统实战开发-实现商品管理
Django图书商城系统实战开发 - 实现商品管理 在本教程中,我们将使用Django框架来实现一个简单的图书商城系统,并重点讨论如何实现商品管理功能。此外,我们还将介绍如何使用Markdown格式来写博客,并将其集成到我们的图书商城系统中…...
走出象牙塔:李郓梁的区块链实践之路丨对话MVP
如何从科研走向实践?李郓梁在社区找到了答案。 作为西安工业大学的硕士研究生,李郓梁从学校的实验室接触区块链技术。通过研读大量论文,李郓梁为区块链多中心化、不可篡改等前沿理论深深着迷,并选择将区块链作为主要研究方向&…...
【hive】hive分桶表的学习
hive分桶表的学习 前言: 每一个表或者分区,hive都可以进一步组织成桶,桶是更细粒度的数据划分,他本质不会改变表或分区的目录组织方式,他会改变数据在文件中的分布方式。 分桶规则: 对分桶字段值进行哈…...
ReactDOM模块react-dom/client没有默认导出报错解决办法
import ReactDOM 模块“"E:/Dpandata/Shbank/rt-pro/node_modules/.pnpm/registry.npmmirror.comtypesreact-dom18.2.7/node_modules/types/react-dom/client"”没有默认导出。 解决办法 只需要在tsconfig.json里面添加配置 "esModuleInterop": true 即…...
TiDB数据库的安装配置
一、 TiDB 软件和硬件环境建议配置 Linux 操作系统版本要求 Linux 操作系统 版本 Red Hat Enterprise Linux 7.3 及以上的 7.x 版本 CentOS 7.3 及以上的 7.x 版本 Oracle Enterprise Linux 7.3 及以上的 7.x 版本 Amazon Linux 2 Ubuntu LTS 16.04 及以上的版本 …...
Unity智慧园区夜景制作
近期使用Unity做了一个智慧园区场景的demo,初步了解了3D开发的一些步骤和知识,以下为制作的步骤,比较简略,备忘: 1. 制作前的设计分析: 1. 分析日光角度,阴影长度,效果 2. 分析冷暖…...
Linux MQTT智能家居项目(LED界面的布局设置)
文章目录 前言一、LED界面布局准备工作二、LED界面布局三、逻辑实现总结 前言 上篇文章我们完成了主界面的布局设置那么这篇文章我们就来完成各个界面的布局设置吧。 一、LED界面布局准备工作 首先添加LED灯光控制的图标。 将选择好的LED图标添加进来: 图标可以…...
LeetCode 160.相交链表
文章目录 💡题目分析💡解题思路🚩步骤一:找尾节点🚩步骤二:判断尾节点是否相等🚩步骤三:找交点🍄思路1🍄思路2 🔔接口源码 题目链接👉…...
【深度学习_TensorFlow】调用keras高层API重写手写数字识别项目
写在前面 上一阶段我们完成了手写数字识别项目的构建,了解了网络构建、训练、测试的基本流程,但是对于一些常见的操作,因其使用过于频繁,实际上并无必要手动实现,而早已被封装为函数了。 这篇文章我们将了解keras高层…...
柔性数组(C语言)
也许你从来没有听说过柔性数组( flexible array )这个概念,但是它确实是存在的。 C99 中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员,但结 构中的柔性数组成员前面必须至少一个其他…...
判断推理 -- 图形推理 -- 属性规律
中心对称:取一个点,穿过中心能找到另一个对称点。把轴对称 中心对称标出来。五角星不是中心对称。 BD对称轴方向相同,但135自带对称轴,24没带,所以6应该不带对称轴。 百分号不是轴对称。 白色对称轴 平行 或者 夹角…...
【更新 v 2.7.5 版本】桌面版 Open Claw 本地一键部署指南
✨ 核心亮点 零代码门槛|全程可视化|无需手动配环境|内置所有依赖|28 万 Tokens 额度 🔗 下载地址 https://xiake.yun/api/download/package/16?promoCodeIV8E496E2F7A 📝 前言 开源圈热门的「数字员…...
【ElevenLabs马来文语音实战指南】:20年AI语音工程师亲授7大避坑要点与本地化发音调优秘技
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs马来文语音技术全景概览 ElevenLabs 作为全球领先的文本转语音(TTS)平台,近年来持续扩展其多语言支持能力,其中马来文(Bahasa Mela…...
VBA添加超链接:Hyperlinks.Add 方法 完整参数解析
Worksheet.Hyperlinks.Add Cells(j 1, 11), ar(2, j), "", "单击打开:" & ar(1, j), ar(1, j) 每个参数解析、 VBA Hyperlinks.Add 方法 完整参数解析 你这句代码是Excel VBA 给单元格添加超链接的核心语句,我把 Hyperlinks.…...
AntiMicroX手柄映射技术方案:解决PC游戏输入兼容性难题的终极方案
AntiMicroX手柄映射技术方案:解决PC游戏输入兼容性难题的终极方案 【免费下载链接】antimicrox Graphical program used to map keyboard buttons and mouse controls to a gamepad. Useful for playing games with no gamepad support. 项目地址: https://gitcod…...
从“杯子放球”到“射击命中”:用Python模拟帮你彻底搞懂离散随机变量
从“杯子放球”到“射击命中”:用Python模拟帮你彻底搞懂离散随机变量 概率论中的离散随机变量概念常常让初学者感到抽象难懂。传统的数学推导虽然严谨,但缺乏直观性。本文将带你用Python代码亲手模拟几个经典概率问题,通过可视化手段让这些概…...
硬件开发、智能硬件与硬件系统:三层架构解析与实践指南
1. 项目概述:从零开始理解硬件世界的三层架构干了十几年硬件,从画第一块单片机最小系统板,到参与设计复杂的智能穿戴设备,我越来越觉得,很多刚入行的朋友,甚至一些软件背景的同事,对“硬件”这个…...
终极Android动漫播放器插件:Hanime1Plugin完全使用指南
终极Android动漫播放器插件:Hanime1Plugin完全使用指南 【免费下载链接】Hanime1Plugin Android插件(https://hanime1.me) (NSFW) 项目地址: https://gitcode.com/gh_mirrors/ha/Hanime1Plugin 想要在Android设备上获得完美的动漫观影体验吗?Hani…...
会议记录差点搞砸,直到遇见这个“录音转文字”神器
上周三下午,我差点因为一场两小时的跨部门评审会被老板“请喝茶”。事情是这样的:作为产品经理,我负责主持一场涉及技术、运营、销售三方的季度复盘会。会上大家争论激烈,我一边控场一边记笔记,结果手忙脚乱——技术总…...
第二章:达梦数据库基础操作入门——从零搭建与核心操作
想要熟练运用达梦数据库,基础操作是关键。本章将聚焦达梦数据库(以主流的DM8版本为例)的基础操作,包括环境准备、数据库安装、核心工具使用、基础SQL操作等,全程贴合实操场景,新手也能快速上手,…...
免费额度哪家强?ESP32玩家实测八大国产大模型API(含通义千问、Kimi、DeepSeek)
ESP32开发者指南:八大国产大模型API横向评测与实战选型 当ESP32遇上大语言模型,会擦出怎样的火花?在物联网设备上直接运行AI交互功能,已经成为越来越多开发者的新选择。但面对众多国产大模型API,如何选择最适合ESP32项…...
