Golang中方法定义及使用

一、介绍

方法是与特定类型关联的函数。它允许在类型上执行操作,并可以访问和修改该类型的字段。方法的定义包括接收者类型方法名参数列表。接收者类型可以是结构体、接口或其他自定义类型。

方法的接收者可以是值或指针类型。如果接收者是值类型,方法内部对接收者的修改不会影响原始值;如果接收者是指针类型,方法内部可以通过指针修改原始值。Golang只有值传递,没有引用传递。这意味着当你将一个变量作为参数传递给一个方法时,实际上是传递了该变量的副本,而不是原始变量本身。因此,当你在方法内部修改传递的参数时,原始变量的值不会改变。这是因为你在修改的是参数的副本,而不是原始变量本身

方法的返回值可以是任意类型,但通常只有一个返回值。方法的返回值可以用来返回操作的结果或错误信息

方法的作用域是局部的,只能在其所属的类型内部调用。方法可以访问该类型的字段和方法

特别提醒:在Go语言中,定义一个方法需要使用func关键字,并且方法的定义必须与类型定义在同一个包内

代码示例:

package main

import "fmt"

type Rectangle struct {
	width  int
	height int
}

// 方法1:传值
func (r Rectangle) SetWidth(width int) {
	r.width = width
}

// 方法2:传地址
func (r *Rectangle) SetWidthByPointer(width int) {
	r.width = width
}

func main() {
	rect := Rectangle{width: 10, height: 5}

	fmt.Println("原始宽度:", rect.width) // 输出: 10

	// 使用传值方式调用方法
	rect.SetWidth(20)
	fmt.Println("调用 SetWidth 后的宽度:", rect.width) // 输出: 10

	// 使用传地址方式调用方法
	rect.SetWidthByPointer(30)
	fmt.Println("调用 SetWidthByPointer 后的宽度:", rect.width) // 输出: 30
}

输出结果:

原始宽度: 10
调用 SetWidth 后的宽度: 10
调用 SetWidthByPointer 后的宽度: 30

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/254537.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

51单片机定时器

51单片机有两个16位定时器,今天复习了一下使用方法,发现当初刚开始学习51单片机时并没有记录,特此今天补上这篇博客。 下面是定时器的总览示意图,看到这个图就能想到定时器怎么设置,怎么开始工作。 第一步&#xff1a…

刷完这个笔记,18K不能再少了....

大家好,最近有不少小伙伴在后台留言,得准备年后面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿到…

EmbedAI:一个可以上传文件训练自己ChatGPT的AI工具,妈妈再也不用担心我的GPT不会回答问题

功能介绍: 个性化定制:提供灵活的训练选项,用户能够通过文件、网站、Notion文档甚至YouTube等多种数据源对ChatGPT进行训练,以满足不同领域和需求的个性化定制。广泛应用场景:ChatGPT支持多种用例,包括智能…

Jmeter吞吐量控制器使用小结

吞吐量控制器(Throughput Controller)场景: 在同一个线程组里, 有10个并发, 7个做A业务, 3个做B业务,要模拟这种场景,可以通过吞吐量模拟器来实现.。 添加吞吐量控制器 用法1: Percent Executions 在一个线程组内分别建立两个吞吐量控制器, 分别放业务A和业务B 吞吐量控制器采…

【算法系列篇】递归、搜索和回溯(三)

文章目录 前言什么是决策树1. 全排列1.1 题目要求1.2 做题思路1.3 代码实现 2. 子集2.1 题目要求2.2 做题思路2.3 代码实现 3. 找出所有子集的异或总和再求和3.1 题目要求3.2 做题思路3.3 代码实现 4. 全排列II4.1 题目要求4.2 做题思路4.3 代码实现 前言 前面我们通过几个题目…

蚂蚁集团5大开源项目获开放原子 “2023快速成长开源项目”

12月16日,在开放原子开源基金会主办的“2023开放原子开发者大会”上,蚂蚁集团主导开源的图数据库TuGraph、时序数据库CeresDB、隐私计算框架隐语SecretFlow、前端框架OpenSumi、数据域大模型开源框架DB-GPT入选“2023快速成长开源项目”。 (图…

Kafka中Ack应答级别和数据去重

在Kafka中,保证数据安全可靠的条件是: 数据完全可靠条件 ACK级别设置为-1 分区副本大于等于2 ISR里应答的最小副本数量大于等于2; Ack应答级别 可靠性总结: acks0,生产者发送过来数据就不管了,可靠性差…

2023年国赛高教杯数学建模D题圈养湖羊的空间利用率解题全过程文档及程序

2023年国赛高教杯数学建模 D题 圈养湖羊的空间利用率 原题再现 规模化的圈养养殖场通常根据牲畜的性别和生长阶段分群饲养,适应不同种类、不同阶段的牲畜对空间的不同要求,以保障牲畜安全和健康;与此同时,也要尽量减少空间闲置所…

人工智能深度学习:探索智能的深邃奥秘

导言 人工智能深度学习作为当今科技领域的明星,正引领着智能时代的浪潮。深度学习和机器学习作为人工智能领域的两大支柱,它们之间的关系既有协同合作,又存在着显著的区别。本文将深入研究深度学习在人工智能领域的角色,以及其在各…

Android Termux安装MySQL数据库并通过内网穿透实现公网远程访问

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身…

鸿蒙端H5容器化建设——JSB通信机制建设

1. 背景 2023年鸿蒙开发者大会上,华为宣布为了应对国外技术封锁的潜在风险,2024年的HarmonyOS NEXT版本中将不再兼容Android,并推出鸿蒙系统以及其自研的开发框架,形成开发生态闭环。同时,在更高维度上华为希望将鸿蒙…

GPT-4V被超越?SEED-Bench多模态大模型测评基准更新

📖 技术报告 SEED-Bench-1:https://arxiv.org/abs/2307.16125 SEED-Bench-2:https://arxiv.org/abs/2311.17092 🤗 测评数据 SEED-Bench-1:https://huggingface.co/datasets/AILab-CVC/SEED-Bench SEED-Bench-2&…

基于主动安全的AIGC数据安全建设

面对AIGC带来的数据安全新问题,是不是就应该一刀切禁止AIGC的研究利用呢?答案是否定的。要发展AIGC,也要主动积极地对AIGC的数据安全进行建设。让AIGC更加安全、可靠的为用户服务。为达到此目的,应该从三个方面来开展AIGC的数据安…

C++中的并发多线程网络通讯

C中的并发多线程网络通讯 一、引言 C作为一种高效且功能强大的编程语言,为开发者提供了多种工具来处理多线程和网络通信。多线程编程允许多个任务同时执行,而网络通信则是现代应用程序的基石。本文将深入探讨如何使用C实现并发多线程网络通信&#xff…

【Netty】Netty核心概念

目录 NIO编程NIO介绍NIO和BIO的比较缓冲区(Buffer)基本介绍常用API缓冲区对象创建添加数据读取数据 通道(Channel)基本介绍Channel常用类ServerSocketChannelSocketChannel Selector (选择器)基本介绍常用API介绍示例代码 NIO 三大核心原理 Netty核心概念Netty 介绍原生 NIO 存…

verilog基础语法-计数器

概述: 计数器是FPGA开发中最常用的电路,列如通讯中记录时钟个数,跑马灯中时间记录,存储器中地址的控制等等。本节给出向上计数器,上下计数器以及双向计数器案例。 内容 1. 向上计数器 2.向下计数器 3.向上向下计数…

Minio文件服务器(上传文件)

官网:https://www.minio.org.cn/ 开源的分布式对象存储服务器 Window安装 用户名和密码相同 创建bucket,并且将策略改成public 一、添加依赖 二、代码 public class FileUploadTest{public static void main(String[] args) throws Exception{//…

RHEL8_Linux_Ansible常用模块的使用

本章主要介绍Ansible中最常见模块的使用 shell模块文件管理模块软件包管理模块服务管理模块磁盘管理模块用户管理模块防火墙管理模块 ansible的基本用法如下。 ansible 机器名 -m 模块x -a "模块的参数" 对被管理机器执行不同的操作,只需要调用不同的模块…

做计算,找天玑算!

天玑算科研服务_DFT计算_MD模拟_FEA_ML_相图计算200余位计算工程师均来自己TOP高校及科研院所,涉及第一性原理,分子动力学,有限元,机器学习,可为催化、电池、能源、化工、生物等重多领域提供技术支持,计算软…

基于Springboot的旅游网站设计与实现(论文+调试+源码)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…
最新文章