浅谈Go语言函数与方法的区别前段时间go语言的返回值接收,我们实验室用go作为后台开发语言开发go语言的返回值接收了一个web项目go语言的返回值接收,由于这是自己第一次使用go语言进行开发,在开发过程中,一味着追求完成任务,在编码的时候没有太注重性能,虽然勉强实现go语言的返回值接收了功能,但是对go语言的理解还是比较浅显的 。下面来谈谈自己对go语言中函数与方法的理解 。
普通函数:
go函数可以返回多个值
值传递: 值传递是指在调用函数时将实际参数复制一份传递到函数中,这样函数中如果对参数进行修改,将不会影响到实际参数
引用传递: 引用传递是指在调用函数将实际参数的地址传递到函数中,那么在函数中对参数进行的修改,将影响到实际参数 。
一般来说go语言函数的 接收者(也就是形参)一般放在函数名后面 ,不能将指针类型的数据直接传递,也就是说函数形参如果是值类型,调用者必须使用值作为实参过来,如果函数形参是指针类型,则函数调用者需使用指针作为实参来调用 。
普通方法:
接收者是在func关键字后面,而不是在函数名称后面,接收者可以是自己定义的一个类型,这个类型可以是struct、interface,一个方法就是一个包含了接收者的函数,接收者可以是命名类型或者是结构体类型的一个值或者是一个指针 。
下面是一个例子来说明方法和函数的区别(重点)
go语言语法(基础语法篇)import "workname/packetfolder"
导入多个包
方法调用 包名.函数//不是函数或结构体所处文件或文件夹名
【go语言的返回值接收 golang 返回函数】packagename.Func()
前面加个点表示省略调用,那么调用该模块里面go语言的返回值接收的函数,可以不用写模块名称了:
当导入一个包时,该包下的文件里所有init()函数都会被执行 , 然而,有些时候go语言的返回值接收我们并不需要把整个包都导入进来 , 仅仅是是希望它执行init()函数而已 。下划线的作用仅仅是为了调用init()函数,所以无法通过包名来调用包中的其go语言的返回值接收他函数
import _ package
变量声明必须要使用否则会报错 。
全局变量运行声明但不使用 。
func 函数名 (参数1,参数2,...) (返回值a 类型a, 返回值b 类型b,...)
func 函数名 (参数1,参数2,...) (返回值类型1, 返回值类型2,...)
func (this *结构体名) 函数名(参数 string) (返回值类型1, 返回值类型2){}
使用大小来区分函数可见性
大写是public类型
小写是private类型
func prifunc int{}
func pubfunc int{}
声明静态变量
const value int
定义变量
var value int
声明一般类型、接口和结构体
声明函数
func function () int{}
go里面所有的空值对应如下
通道类型
内建函数 new 用来分配内存 , 它的第一个参数是一个类型,不是一个值 , 它的返回值是一个指向新分配类型零值的指针
func new(Type) *Type
[这位博主有非常详细的分析]
Go 语言支持并发,我们只需要通过 go 关键字来开启 goroutine 即可 。
goroutine 是轻量级线程 , goroutine 的调度是由 Golang 运行时进行管理的 。
同一个程序中的所有 goroutine 共享同一个地址空间 。
语法格式如下:
通道(channel)是用来传递数据的一个数据结构 。
通道的声明
通道可用于两个 goroutine 之间通过传递一个指定类型的值来同步运行和通讯 。操作符 - 用于指定通道的方向,发送或接收 。如果未指定方向 , 则为双向通道 。
[这里有比较详细的用例]
go里面的空接口可以指代任何类型(无论是变量还是函数)
声明空接口
go里面的的强制类型转换语法为:
int(data)
如果是接口类型的强制转成其go语言的返回值接收他类型的语法为:
go里面的强制转换是将值复制过去,所以在数据量的时候有比较高的运行代价
go语言返回的error为什么可以不接收error 类型介绍
error 类型实际上是抽象了 Error() 方法的 error 接口go语言的返回值接收,Golang 使用该接口进行标准的错误处理 。
复制代码代码如下:
type error interface {
Error() string
}
一般情况下go语言的返回值接收 , 如果函数需要返回错误,就将 error 作为多个返回值中的最后一个(但这并非是强制要求) 。参考模型go语言的返回值接收:
复制代码代码如下:
func Foo(param int) (n int, err error) {
// ...
}
if n, err := Foo(0); err != nil {
// 错误处理
}
go语言的返回值接收的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于golang 返回函数、go语言的返回值接收的信息别忘了在本站进行查找喔 。
推荐阅读
- 怎么把pdf转为文件,怎么把pdf转为文件夹
- 如何快速提升新媒体运营,如何理解新媒体运营
- 如何找回做的ppt,如何找回做的表格文件
- chatgpt留学,留学查询网站
- tp6怎么连接MySQL的简单介绍
- 启动redis后闪退,Redis启动闪退
- 归宿下载,归宿 下载
- 直播造势文案,直播吸引人文案
- c语言输入字符函数 c语言输入字符的函数