首页 > 其他分享 >golang 函数和方法的区别

golang 函数和方法的区别

时间:2025-01-11 23:02:45浏览次数:1  
标签:函数 区别 golang stu func Student main

golang 函数和方法的区别

一句话总结就是,func直接函数名就是函数,否则就是方法.
至于是谁的的方法,看函数前面有没有*号的指向.

golang中函数第一等公民,所以以函数优先.

demo\main.go


package main

import "fmt"

// 定义一个结构体
type Student struct {
	name string
	age  int
}

// 定义一个函数,用于打印学生信息,它不依赖于特定的 Student 类型实例
func printStudentInfo(s Student) {
	fmt.Printf("学生姓名:%s,年龄:%d\n", s.name, s.age)
}

// 定义一个方法,用于修改学生的年龄,它与 Student 类型关联
// ▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
// func直接函数名就是函数,否则就是方法
func (s *Student) setAge(newAge int) {
	s.age = newAge
}

func main() {
	// 创建一个 Student 实例
	stu := Student{name: "Alice", age: 20}
	// 调用函数
	printStudentInfo(stu)
	// 调用方法
	stu.setAge(21)
	printStudentInfo(stu)
}

demo\main_test.go


package main

import "testing"

func TestMain(t *testing.T) {
	t.Run("testMain", func(t *testing.T) {
		main()
	})
}

标签:函数,区别,golang,stu,func,Student,main
From: https://www.cnblogs.com/zhuoss/p/18666326

相关文章

  • golang 单元测试 命令行 日志打印 测试结果打印控制台
    golang单元测试命令行日志打印测试结果打印控制台test.bat@REMgotest-timeout30s-run^TestMultiPong$github.com/jergoo/go-grpc-tutorial/ping@REMgotest-timeout30s-run^TestPing$github.com/jergoo/go-grpc-tutorial/ping@REMgotest-timeout30s-......
  • 嵌入式系统里面malloc函数底层原理
       谈到高性能编程,我们绕不过一个问题高效内存分配,通常我们会使用malloc和free函数来申请和释放内存。   那么我们习以为常的malloc和free函数,真的能满足高性能编程的要求吗?   带着这个问题我们来深入理解malloc和free函数实现原理。1.ptmalloc工作原理  ......
  • 深入了解 C++ 函数模板
    函数模板是C++泛型编程的基石之一,它使得程序员可以编写类型无关的代码,提升代码复用性和灵活性.在本文中,我们将从基础到进阶,一步步解析C++函数模板的核心概念,常见用法及其限制.1.初识函数模板1.1定义函数模板:以Max函数为例函数模板允许我们定义一个......
  • 【MySQL】常用的内置函数
    文章目录1.日期函数2.字符串函数3.数学函数4.其它函数在MySQL内部,有很多的函数供我们使用1.日期函数获取时间与日期current_date()current_time()current_timestamp()now()date()获取当前的日期时间仅获取当前的日期/时间获取一个时间加/减一个......
  • 详解JS函数
    函数Function定义方式普通函数JS函数最多只能返回一个数据!,如果函数没有使用return返回数据、相当于returnundefined!函数的参数支持必传参数、默认参数和不定项参数(不定项参数使用三个点表示、且类型是数组),和python相比,不支持关键字参数。fu......
  • 9.java中String,StringBuilder,StringBuffer 什么区别
    在Java中,String、StringBuilder和StringBuffer都是用来处理字符串的类,但它们之间有一些关键的区别,主要体现在可变性和线程安全性上。以下是它们的详细比较:1.String不可变性:String是不可变的类,也就是说,一旦创建了一个String对象,它的内容就不能再被修改。每......
  • 如何避免函数调用栈溢出?
    在前端开发中,函数调用栈溢出通常是由于递归调用过深或者大量嵌套函数调用导致的。为了避免函数调用栈溢出,你可以采取以下几种策略:优化递归算法:尾递归优化:尾递归是一种特殊的递归形式,其中递归调用是函数体中最后执行的语句。通过优化尾递归,你可以将递归转换成循环,从而避免栈溢......
  • 请说说鸿蒙和android有什么区别?
    鸿蒙与Android在前端开发方面的区别主要体现在以下几个方面:开发框架和语言:鸿蒙使用ArkTS语言,结合ArkUI声明式UI框架进行开发,提供了一套全新的组件和布局系统,更易于构建跨设备的应用。Android则主要使用Java或Kotlin语言,搭配AndroidSDK进行开发,UI布局使用XML,近年来也支持Jet......
  • 请说说在Angular中提供者,服务和工厂之间有什么区别?
    在Angular中,提供者(Provider)、服务(Service)和工厂(Factory)是三种不同的概念,它们在前端开发中的角色和功能各有特点。以下是对这三者的详细解释和区别归纳:提供者(Provider):提供者是Angular依赖注入系统的一部分,它负责定义如何创建服务或值的实例。提供者可以配置为在应用程序的不......
  • 请说说在Angular中$scope和scope有什么区别?
    在Angular中,$scope和scope的区别主要体现在概念、使用方式和上下文环境上。概念上的区别:$scope:在AngularJS(Angular1.x版本)中,$scope是一个重要的概念,它代表了一个应用数据模型的对象。在控制器中,数据模型(即$scope对象)可以把数据从控制器传递到HTML视图。$scope是一个POJO(Plai......