• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Golang > Go语言函数学习教程

Go语言函数学习教程

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了Go语言函数学习教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了Go语言函数基本用法。分享给大家供大家参考,具体如下:

这里要说一下是Go函数和一些其他语言不一样的地方

1 函数格式不同
    fmt.Println(i)
    r = "hi"
    return r
}</div>

func说明这个是个函数

GetMsg是函数名

(i int) 函数接收一个int参数

(r string) 函数返回一个string类型返回值

2 函数可以返回多个返回值

这点和c,php都不一样,和lua是一样的
    fmt.Println(i)
    r = "hi"
    err = "no err"
    return r,err
}</div>

3 defer的使用

defer的意思是"在函数退出时调用",特别用于对文件进行读写操作的时候,需要在open之后要调用close操作,将close操作使用defer
    file.Open(filePath)
    defer file.Close()
    if true {
        file.Read()
    } else {
        return false
    }
}</div>

这样写的意思是在file.Open后不立即调用close,当return false的时候调用file.Close().这样就有效避免了C语言中的内存泄露问题。

4 比较难理解的:panic,recover和defer

defer的作用前面说得很清楚了。

Panic和Recover我们就将他们看成是其他语言中的throw和catch

下面这个例子:
import "fmt"
func main() {
    f()
    fmt.Println("Returned normally from f.")
}
func f() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered in f", r)
        }
    }()
    fmt.Println("Calling g.")
    g(0)
    fmt.Println("Returned normally from g.")
}
func g(i int) {
    if i > 3 {
        fmt.Println("Panicking!")
        panic(fmt.Sprintf("%v", i))
    }
    defer fmt.Println("Defer in g", i)
    fmt.Println("Printing in g", i)
    g(i + 1)
}</div>

返回了:

Printing in g 0
Printing in g 1
Printing in g 2
Printing in g 3
Panicking!
Defer in g 3
Defer in g 2
Defer in g 1
Defer in g 0
Recovered in f 4
Returned normally from f.</div>

Panic抛出了信息,并且跳出函数。Recover接受到了信息,并且继续处理。

这个例子理解了基本就掌握了Recover和Panic

希望本文所述对大家Go语言程序设计有所帮助。

</div>

您可能想查找下面的文章:

相关文章

  • go语言template用法实例
  • golang使用sort接口实现排序示例
  • Go语言使用组合的方式实现多继承的方法
  • go语言通过odbc操作Access数据库的方法
  • Go语言接口定义与用法示例
  • Go语言中反射的正确使用
  • golang使用正则表达式解析网页
  • go语言使用pipe读取子进程标准输出的方法
  • Go语言Cookie用法分析
  • Go语言map用法实例分析

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 浅析Go语言中的Range关键字
    • go语言遍历文件夹示例
    • go语言map字典删除操作的方法
    • Go语言中append函数用法分析
    • go语言实现猜数字小游戏的方法
    • 深入解析Go语言编程中的递归使用
    • Go语言获取本机逻辑CPU数量的方法
    • Go语言实现简单留言板的方法
    • Golang继承模拟实例详解
    • go语言的sql包原理与用法分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有