iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >一文了解Go语言中的函数与方法的用法
  • 412
分享到

一文了解Go语言中的函数与方法的用法

2024-04-02 19:04:59 412人浏览 泡泡鱼
摘要

目录函数定义语法函数定义示例无返回值函数单一返回值函数多返回值函数方法(Method)定义方法(Method)示例基本类型结构体类型函数定义语法 与大部分语言一致,Go语言中的函数定

函数定义语法

与大部分语言一致,Go语言中的函数定义与其他语言基本一致

func function_name(Parameter-list) {
    // function body...
}

func function_name(Parameter-list) Return-Type {
    // function body...
}

func function_name(Parameter-list) (Multiple Return-Types){
    // function body..
}

func: 函数定义关键字

function_name: 函数名称,Go语言主要使用camel-case(驼峰)命名的方式,还根据函数的性质,用首字母大小写区分作用,具体会在后面专门的章节讲解Go语言的规范

Parameter-list: 参数列表,如果没有可以忽略

Return-Type/Multiple Return-Types: 返回值的类型,即return返回值的类型,这里特别将三种形式进行了区分:

  • 无返回值/单一返回值/多返回值
  • 另外两种的细小的区别在于括号的使用,单一返回类型一般不再添加括号,而多返回值则需要添加括号
  • 另外为了美观,参数列表后面的括号,建议与返回类型之间有一个空格

函数定义示例

无返回值函数

func HelloFunc() {
    fmt.Println("Hello, World")
}

单一返回值函数

本示例中演示了参数定义方法和返回值类型定义方法

func HelloFunc(msg string) string {
    return "Hello, " + msg
}

多返回值函数

第二个返回值的类型通常用于回传错误,这样方便程序进行异常处理

func HelloFunc(msg string) (string, error) {
    return "Hello, " + msg, nil
}

我们再来看一下完整的代码实现,主函数中调用HelloFunc时,也需要两个变量接收相应的值

package main

import "fmt"

func HelloFunc(msg string) (string, error) {
    return "Hello, " + msg, nil
}

func main() {
    printString, err := HelloFunc("World")
    if err == nil {
        fmt.Println(printString)
    }
}

方法(Method)定义

Go语言中并没有类,所以在Go语言中提供了一种类似函数定义的方法定义,通过在函数名称前增加Reciever类型,实现一种类似类中方法的定义,方法可以使用Reciver的属性。我们来看一下语法:

func (Reciever-Name Type) function_name(Parameter-list) (Multiple Return-Types){
    // function body..
}

由于大部分定义内容与上述函数定义相同,这里就不再赘述,只介绍一下新增的部分:

Reciever-Name:类型必须是自定义类型,不能是内置的int, string等,使用的话,在编译阶段就会报错

方法(Method)示例

基本类型

我们来看一个通过基本类型实现的方法,这里使用到了一个未曾学习到的知识点——自定义类型type,后面还会详细讲解,不用在此处纠结。这句含义就是通过自定义类型mystring再次定义的变量,本质上与string同一类型。

type mystring string

这里注意我们的函数定义,在函数名前,多了(msg mystring)的定义,而在函数体内,我们也可以直接使用msg

func (msg mystring) HelloFunc() {
    str := "Hello, " + msg
    fmt.Println(str)
}

而在main函数中进行调用时,与上面的函数调用不同,我们直接使用调用mymsg的方法HelloFunc,实现了与上面例子类似的方法

var mymsg mystring
mymsg = "World"
mymsg.HelloFunc()

完整代码如下所示

package main

import "fmt"

type mystring string

func (msg mystring) HelloFunc() {
    str := "Hello, " + msg
    fmt.Println(str)
}

func main() {
    var mymsg mystring
    mymsg = "World"
    mymsg.HelloFunc()
}

结构体类型

其实从各个项目的源代码来看,方法还是更多的与结构体(struct)和接口(interface)一起使用,这些都会在后面进行详细讲解,这里只需要了解即可。这里介绍一个简单的例子,我们来计算长方形的面积。

  • 定义了一个结构体rect,其中包含长和宽两个属性
  • 计算面积的方法area(),Reciver定义为结构体类型,这样方法体内,就可以使用长和宽计算面积
  • 主函数中,定义了一个结构体,并且初始化长和宽分别为3和4
  • 调用自定义结构体的r.area()完成面积计算
package main

import "fmt"

type rect struct {
    width float64
    height float64
}

func (r rect) area() float64 {
    return r.width * r.height
}

func main() {
    r := rect{3, 4}
    rectArea := r.area()
    fmt.Printf("Rect area is %v\n", rectArea)
}

到此这篇关于一文了解Go语言中的函数与方法的用法的文章就介绍到这了,更多相关Go语言 函数 方法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: 一文了解Go语言中的函数与方法的用法

本文链接: https://www.lsjlt.com/news/153472.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 一文了解Go语言中的函数与方法的用法
    目录函数定义语法函数定义示例无返回值函数单一返回值函数多返回值函数方法(Method)定义方法(Method)示例基本类型结构体类型函数定义语法 与大部分语言一致,Go语言中的函数定...
    99+
    2022-11-13
  • 深入了解Go语言的基本语法与常用函数
    目录一、基本语法标识符命名规范变量的定义与使用定义常量二、常用函数main 函数与 init 函数fmt 包及其函数一、基本语法 标识符命名规范 Go 是区分大小写的,标识符的命名包...
    99+
    2022-11-13
  • Go语言中的函数与方法怎么使用
    这篇文章主要介绍了Go语言中的函数与方法怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言中的函数与方法怎么使用文章都会有所收获,下面我们一起来看看吧。函数定义语法与大部分语言一致,Go语言中的函数...
    99+
    2023-07-02
  • go语言中函数与方法介绍
    在C#或者Java里面我们都知道,一个Class是要包含成员变量和方法的,对于GO语言的Struct也一样,我们也可以给Struct定义一系列方法。 一、怎么定义一个方法? Go的方...
    99+
    2022-11-13
  • Go语言中函数的使用方法详解
    目录函数特点函数知识点函数的使用函数定义函数的参数函数的返回值函数的变量作用域函数的递归调用函数的可变参数函数的闭包函数的 defer 语句注意函数特点 函数可以有多个返回值。可以将...
    99+
    2023-05-18
    Go语言函数使用方法 Go语言函数使用 Go语言函数
  • go语言中函数与方法怎么定义
    这篇“go语言中函数与方法怎么定义”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言中函数与方法怎么定义”文章吧。一、怎...
    99+
    2023-07-02
  • Go语言中make和new函数的用法与区别
    相同点: make和new都是用来创建分配类型内存的。 不同点: 先看下面的代码 package main import "fmt" func main(){ var i *in...
    99+
    2022-11-13
  • Go语言的基本语法与常用函数是什么
    今天小编给大家分享一下Go语言的基本语法与常用函数是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、基本语法标识符命名...
    99+
    2023-07-02
  • 一文带你了解Go语言标准库math和rand的常用函数
    目录math 标准库Abs 函数Max 函数Min 函数CeilFloor 函数Trunc 函数Dim 函数Mod 函数Pow 函数Sqrt 函数Cbrt 函数Modf 函数rand...
    99+
    2022-12-19
    Go语言math rand Go语言 math Go语言 rand
  • 一文带你了解Go语言fmt标准库输出函数的使用
    目录fmt 输出函数Fprint、Fprintf、FprintlnPrint、Printf、PrintlnSprint、Sprintf、Sprintln小结fmt 输出函数 函数描述...
    99+
    2022-12-31
    Go语言 fmt输出函数使用 Go语言 fmt标准库 Go语言 fmt
  • 一文搞懂Go语言操作Redis的方法
    目录前言安装依赖包连接Redisredis连接池总结前言 Redis是一个开源的内存数据库,在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用。感兴趣的小伙伴们可以参考借鉴,希望对大...
    99+
    2022-09-06
  • 一文带你了解Go语言中接口的使用
    目录接口接口的实现接口类型变量空接口类型断言类型断言变种 type switch小结接口 在 Go 语言中,接口是一种抽象的类型,是一组方法的集合。接口存在的目的是定义规范,而规范的...
    99+
    2022-12-08
    Go语言接口使用 Go语言接口 Go 接口
  • Go语言Slice作为函数参数的使用方法
    这篇文章主要讲解了“Go语言Slice作为函数参数的使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言Slice作为函数参数的使用方法”吧!目录前言问题与解析典型问题其它疑问1其...
    99+
    2023-06-20
  • Go语言学习之new函数的用法详解
    目录1、new函数介绍2、示例3、总结1、new函数介绍 在 Go 语言中,new 函数用于动态地分配内存,返回一个指向新分配的零值的指针。它的语法如下: func new(Type...
    99+
    2023-05-20
    Go new函数用法 Go new函数 Go new
  • 一文带你了解Go语言中锁的实现
    目录前言MutexLocklockSlowUnlockUnlockSlow其他关键函数RWMutexLock()UnLock()RLock()UnRLock()前言 此文为学习go锁...
    99+
    2023-03-15
    Go语言 锁 Go语言 读写锁 Go 锁
  • go语言中方法和函数的区别有哪些
    本文小编为大家详细介绍“go语言中方法和函数的区别有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“go语言中方法和函数的区别有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。区别:1、函数function...
    99+
    2023-07-04
  • go语言中方法和函数的区别是什么
    区别:1、函数function是一段具有独立功能的代码,可以被反复多次调用,从而实现代码复用;而方法method是一个类的行为功能,只有该类的对象才能调用。2、方法有接受者,而函数无接受者。3、函数不可以重名,而方法可以重名。4、调用方式不...
    99+
    2023-05-14
    go语言 Golang
  • 一文带你了解Go语言中的单元测试
    目录基本概念示例一:取整函数基本测试示例二:Fail()函数示例三:FailNow函数实例四:Log和Fetal函数基本概念 上一节提到,代码完成的标准之一还包含了单元测试,这部分也...
    99+
    2022-11-13
  • 一文带你深入了解Go语言中的事务
    目录背景事务实践事务说明优化方案总结背景 近期看到一篇文章,真的感叹作者的洞察力,在开发时有可能就会犯这样的错误,所以一定要多学习,多实践。其问题就是你在提交事务时,如果中间有其他业...
    99+
    2023-05-16
    Go语言事务终止 Go语言事务 Go 事务
  • R语言中的fivenum与quantile()函数算法详解
    fivenum()函数: 返回五个数据:最小值、下四分位数数、中位数、上四分位数、最大值 对于奇数个数字=5,fivenum()先排序,依次返回最小值、下四分位数、中位数、上四分位数...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作