美文网首页
Go语言基础——函数

Go语言基础——函数

作者: 北枫晴天 | 来源:发表于2018-07-04 04:19 被阅读0次

Go函数的特性

不支持:嵌套、函数重载、默认值参数
支持:可变变参、多返回值、命名返回值参数、匿名函数、闭包
特别注意:函数可以作为一种类型使用

1.1、函数定义

func name(parameter-list)(result-list) {
    body
}

1.2可变参数函数

可变参数函数就是指函数的最后一个参数可以接受任意个参数。这类函数在最后一个 参数的类型前面添加有一个省略号"..."。在函数里面这个参数实质上变成了一个对应参数类型的切片。

func Minimumint(first int, rest ...int) int {
    for _, x := range rest {
        if x < first 
        first = x
    }
    return first
}

1.3多返回值函数

Go语言支持一个函数能够返回多个结果。

func findLinks(url string) ([]stning, error) {
    //func body
    return links, err
}

调用一个多返回值函数,如果调用者要使用这些返回值,则必须显式地将返回值赋给变量。
如:links, err := findLinks(url)

忽略其中一个返回值可以将它赋给一个空标识符。
如:links, _:= findLinks(url) // 忽略错误信息

返回一个多值结果可以是调用另一个多值返回的函数:

func findLinksLog(url string) ([]string, error) { 
    log.Printf("findLinks %s", url) 
    return findLinks(url)
}

1.4命名返回值参数

Go语言支持返回参数想入参一样进行命名,命名后的返回参数可用作为函数的局部变量使用,并且可用使用return直接返回。

func f(a, b, c int) (x, y, z int) {
    x = a * b
    y = b * c
    z = c * a
    return //不需要指定返回的变量
}

1.5 init()函数和 main()函数

Go语言为特定目的保留了两个函数名:init()函数(可以出现在任何的包里)和main () 函数(只在main包里)。这两个函数既不可接收任何参数,也不返回任何结果。
init ()函数和main ()函数是自动执行的,所以我们不应该显式调用它们。

Go程序的启动顺序

Go程序的初始化和执行总是从main包开始;
如果main包里导入了其他的包,则会按顺序将它们包含进main包里;
一个包实际上只会被导入 —次,当一个 包被导入时,如果它自己还导入了其他的包,则还是先将其他的包导入进来,然后再创建这个 包的一些常量和变量。
后续就是调用init()函数了(如果有多个就调用多次),最终所有的 包都会被导入到main包里(包括这些包所导入的包等),此时main这个包的常量和变量也会 被创建,init()函数会被执行(如果有或者多个的话);
最后,main包里的main()函数会被执行,程序开始运行。
启动过程参考下图:


Go程序启动过程.png

1.6无函数体函数声明

在Go的应用中,有可能会看到有些函数的声明没有函数体,说明该函数使用了Go以外的语言实现,这样的声明定义了函数签名。

func Sin(x float64) float64 //使用汇编语言实现

相关文章

  • 11.***函数***

    Go语言基础之函数 Golang 函数是组织好的、可重复使用的、用于执行指定任务的代码块。本文介绍了Go语言中函数...

  • Go语言学习笔记(二)-基础语法

    Go语言结构 Go语言的基础组成有一下几个部分: 包声明 包引入 函数 变量 语句&表达式 注释 关于Go的语言组...

  • Go语言基础——函数

    Go函数的特性 不支持:嵌套、函数重载、默认值参数支持:可变变参、多返回值、命名返回值参数、匿名函数、闭包特别注意...

  • go 语言基础--函数

    1、函数 和C语言类型,Go语言也有函数的概念,语法如下: 2 参数和返回值 2.1 返回值 go 语言可以返回零...

  • go语言基础

    go语言基础 go 语言接口

  • Go语言探索 - 7(原创)

    Go语言基础系列博客用到的所有示例代码 在 上一篇文章主要学习了Go语言的函数定义、值传递和引用传递以及闭包函数。...

  • (四)go语言函数&参数传递

    go语言函数 基本语法 例子 go语言参数传递

  • go语言基础之函数

    欢迎来我的个人博客:fizzyi 自定义函数 1.定义格式 函数构成代码执行的逻辑结构。在Go语言中,函数的基本组...

  • Go 语言基础——init函数

    在main被执行前,所有依赖的package的init方法都会被执行(类似与Java中的代码块)不同包的init函...

  • Go语言基础3 - 函数

    概述 我们将用几节来学习Go语言基础,本文结构如下: 函数 函数的基本语句结构: func 是关键字,表示函数的开...

网友评论

      本文标题:Go语言基础——函数

      本文链接:https://www.haomeiwen.com/subject/btusuftx.html