第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

go基礎(chǔ)語法-函數(shù)

標簽:
Go

1.基础定义

golang的函数很'纯粹',只有可变参数列表的概念,没有默认参数、可选参数、函数重载、操作符重载这些难以把控的概念

语法:'func'声明,而后函数名在前,中间的括号内定义参数,返回值类型在最后

func funcationName(parameter1,parameter2 int,parameter3 string) int{
}

2.多个返回值

golang的函数可以返回多个值,定义函数时将多个返回值类型用','分隔并用括号包含,同时函数体内的return语句中用','分隔返回值即可

func div(a,b int) (int,int){    return a / b,a % b
}

返回值可以命名,且无需在return语句后加上返回值(一般在简单函数中使用),调用时有返回值提示

func div(a,b int) (q,r int){
    q = a / b
    r = a % b    //直接return仅用在简单函数内,复杂函数内会难以定位进行值返回的位置,增加代码的阅读难度
    //复杂函数可用'return q,r'的形式 
    return }

多返回值常用在错误返回,第一个返回值为正常值,第二个返回值为错误信息(无错误时,返回'nil')

func div(a,b int) (result int, err error){    if b == 0{        return 0,fmt.Errorf("Divisor unlawful " )
    }    return a / b , nil}

3. 可变参数

可变参数:参数类型固定,个数可变

定义:variableName ...variableType

func sumList(num ...int) int{
    sum := 0
    for i := range num{
        sum += i
    }    return sum
}

4.函数作为参数

golang虽然不是"纯粹"的函数式语言,但支持函数式编程,所以函数参数可以是函数

/*
参数为fun、a、b,fun:一个接受两个int,返回一个int的函数
*/func apply(fun func(int,int) int, a,b int) int {    return fun(a,b)
}

测试代码

package mainimport (    "fmt"
    "math"
    "reflect"
    "runtime")/*
普通定义
 */func div1(a, b int) (int, int) {    return a / b, a % b
}/*
返回值命名
 */func div2(a, b int) (q, r int) {
    q = a / b
    r = a % b    return}/*
返回错误信息
 */func div3(a, b int) (result int, err error) {    if b == 0 {        return 0, fmt.Errorf("Divisor unlawful ")
    }    return a / b, nil}/*
可变参数
 */func sumList(num ...int) int{
    sum := 0
    for i := range num{
        sum += i
    }    return sum
}/*
函数作为参数
 */func apply(fun func(int,int) int, a,b int) int {
    f := reflect.ValueOf(fun).Pointer() //获取fun的指针
    fName := runtime.FuncForPC(f).Name() //获取fun的名字
    fmt.Printf("Calling funcation %s with ages (%d,%d)",fName,a,b )    return fun(a,b)
}func max(a,b int) int  {    return int(math.Max(float64(a),float64(b)))
}func main() {
    fmt.Println(div1(9, 6))
    fmt.Println(div2(3, 4))
    result, err := div3(1, 0)    if err != nil {
        fmt.Println("Error : ", err)
    } else {
        fmt.Println(result)
    }
        fmt.Println(sumList(1,2,3,4,5))    //参数为函数max
    fmt.Println(apply(max,9,3))    //参数为匿名函数
    fmt.Println(apply(func(a ,b int) int{        return int(math.Max(float64(a),float64(b)))
    },3,4))
}

原文出处:https://www.cnblogs.com/lz120792/p/9563550.html

點擊查看更多內(nèi)容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消