定义与使用函数

5年以前  |  阅读数:189 次  |  编程语言:Golang 

以下示例用来说明如何使用定义与使用函数,包括:多返回值函数,命名返回值函数,可变参数的函数的定义,匿名函数。

package main

import "fmt"

func plus(a, b int) int {
    return a + b
}

func multi() (string, int) {
    return "age is: ", 18
}

func namedReturnValue() (name string, height int) {
    name = "https://www.codingsky.com"
    height = 180

    return
}

func Sum(nums ...int) int {
    fmt.Println("len of nums is : ", len(nums))
    res := 0
    for _, v := range nums {
        res += v
    }
    return res
}

func sayHello(name string) {
    fmt.Println("Hello ", name)
}

func logger(f func(string), name string) {
    fmt.Println("start calling method sayHello")
    f(name)
    fmt.Println("end calling method sayHellog")
}

func sendValue(name string) {
    name = "hemuketang"
}

func sendAddress(name *string) {
    *name = "hemuketang"
}

func addInt(n int) func() int {
    i := 0
    return func() int {
        i += n
        return i
    }
}

func main() {
    // 单返回值函数
    res := plus(1, 2)
    fmt.Println(res)

    // 多返回值函数
    str, age := multi()
    fmt.Println(str)
    fmt.Println(age)

    // 命名返回值函数
    name, height := namedReturnValue()
    fmt.Println(name, " ", height)

    // 参数可变函数
    fmt.Println(Sum(1))
    fmt.Println(Sum(1, 2))
    fmt.Println(Sum(1, 2, 3))

    // 匿名函数
    func(name string) {
        fmt.Println(name)
    }("禾木课堂")
    logger(sayHello, "禾木课堂")

    // 传值和传引用
    str = "禾木课堂"
    fmt.Println("before calling sendValue, str : ", str)
    sendValue(str)
    fmt.Println("after calling sendValue, str : ", str)

    fmt.Println("before calling sendAddress, str : ", str)
    sendAddress(&str)
    fmt.Println("after calling sendAddress, str: ", str)

    // 闭包
    addOne := addInt(1)
    fmt.Println(addOne()) // 1
    fmt.Println(addOne()) // 2
    fmt.Println(addOne()) // 3

    addTwo := addInt(2)
    fmt.Println(addTwo()) // 2
    fmt.Println(addTwo()) // 4
    fmt.Println(addTwo()) // 6
}
 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
将二进制数据转为16进制以便显示
获取IMSI
获取IMEI
Java生成UUID
PHP自定义函数获取搜索引擎来源关键字的方法
让你成为最历害的git提交人
在Zeus Web Server中安装PHP语言支持
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Yii2汉字转拼音类的实例代码
Python 2与Python 3版本和编码的对比
php+ajax+json 详解及实例代码
php封装的page分页类完整实例
PHP设计模式之工厂模式与单例模式
php数组合并array_merge()函数使用注意事项
PHP实现简单爬虫的方法
php实现数组中索引关联数据转换成json对象的方法
wget使用技巧