当前位置:网站首页>Go 函数与方法
Go 函数与方法
2022-08-08 08:34:00 【dj1540225203】
go中函数其实就是类似
//1.普通函数
//接收值类型参数的函数
func valueIntTest(a int) int {
return a + 10
}
//接收指针类型参数的函数
func pointerIntTest(a *int) int {
return *a + 10
}
函数其实就是 func后 没有 struct结构参数。go中方法其实就是类似
//2.方法
type PersonD struct {
id int
name string
}
//接收者为值类型
func (p PersonD) valueShowName() {
fmt.Println(p.name)
}
//接收者为指针类型
func (p *PersonD) pointShowName() {
fmt.Println(p.name)
}
方法在 func后 多了个struct参数实例
package main
//普通函数与方法的区别(在接收者分别为值类型和指针类型的时候)
import (
"fmt"
)
//1.普通函数
//接收值类型参数的函数
func valueIntTest(a int) int {
return a + 10
}
//接收指针类型参数的函数
func pointerIntTest(a *int) int {
return *a + 10
}
func structTestValue() {
a := 2
fmt.Println("valueIntTest:", valueIntTest(a))
//函数的参数为值类型,则不能直接将指针作为参数传递
//fmt.Println("valueIntTest:", valueIntTest(&a))
//compile error: cannot use &a (type *int) as type int in function argument
b := 5
fmt.Println("pointerIntTest:", pointerIntTest(&b))
//同样,当函数的参数为指针类型时,也不能直接将值类型作为参数传递
//fmt.Println("pointerIntTest:", pointerIntTest(b))
//compile error:cannot use b (type int) as type *int in function argument
}
//2.方法
type PersonD struct {
id int
name string
}
//接收者为值类型
func (p PersonD) valueShowName() {
fmt.Println(p.name)
}
//接收者为指针类型
func (p *PersonD) pointShowName() {
fmt.Println(p.name)
}
func structTestFunc() {
//值类型调用方法
personValue := PersonD{101, "hello world"}
personValue.valueShowName()
personValue.pointShowName()
//指针类型调用方法
personPointer := &PersonD{102, "hello golang"}
personPointer.valueShowName()
personPointer.pointShowName()
//与普通函数不同,接收者为指针类型和值类型的方法,指针类型和值类型的变量均可相互调用
}
func main() {
structTestValue()
structTestFunc()
}其实无论是 函数还是方法;接受参数为 指针时 ,参数传入的时候 加 & 就可,其他的和php很像的
边栏推荐
猜你喜欢
随机推荐
优雅地处理重复请求(并发请求)
【回归预测】基于GPML工具箱的高斯过程回归附matlab代码
你一定要看的安装及卸载测试用例的步骤及方法总结
ACWing 198. 反素数 题解
Offensive and defensive world - web2
lvm creates logical volumes
djanjo fourth training
mysql-cdc 换2.2.x 版本 怎么读不到 数据 咋回事
Spark2 struct SQL processing
面试官:工作中用过锁么?说说乐观锁和悲观锁的优劣势和使用场景
Redis读写分离(三)
攻防世界——leaking
攻防世界——fakebook
安装oracle19c时报错DBT-50000
百度飞浆EISeg高效交互式标注分割软件的使用教程
Today share how to submit a bug
Datawhale社区黑板报(第二期)
nodeJs--egg框架介绍
数据智能正当时,九章云极DataCanvas公司荣获“最具投资价值公司”
制作SD启动卡,从SD卡启动系统




![[Raspberry Pi] vim editor](/img/a8/6cfdeefa044dfa44b603654ea11a98.png)




