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

举报
Nick Qiu 发表于 2021/03/25 22:32:16 2021/03/25
【摘要】 go语言函数 基本语法 // func funcationname(a, b int,op string) int 例子 package main import ( "fmt" "math" "reflect" "runtime" ) //函数声明 func add(a, b int ) int { return a+b } //有多个返回值的函数 func d...

go语言函数

基本语法

//  
func funcationname(a, b int,op string) int  

例子

package main

import ( "fmt" "math" "reflect" "runtime"
)

//函数声明
func add(a, b int ) int  { return a+b
}
//有多个返回值的函数
func div(a ,b int ) (int, int ) { return a/b, a %b
}

//有多个返回值的函数,返回值取名
func div1(a ,b int ) (q,r  int ) { q = a/b r = a % b return
}

//多返回值,错误处理
func eval(a, b int ,op string) (int,error) { switch op { case "+": return a+b, nil case "-": return a-b, nil default: return 0, fmt.Errorf( "unsupported operation:%s", op) }
}
//使用函数作为参数
func apply(op func(int ,int )int , a, b int ) int  { p := reflect.ValueOf(op).Pointer() opName := runtime.FuncForPC(p).Name() fmt.Printf("Calling funcation %s with args (%d,%d)",opName,a,b) return op(a,b)
}

func pow(a,b int )  int  { return int(math.Pow(float64(a),float64(b)))
}

//可变参数
func sum(numbers ... int )  int{ s := 0 for i := range numbers{ s += numbers[i] } return s
}

func main()  { fmt.Println(add(1,2)) fmt.Println(div(13,3)) q, r := div1(15, 4) fmt.Println(q,r) //该用法可以忽略第二个r的返回值 //q, _ := div1(15, 4) if result, err := eval(3, 4, "+"); err!=nil{ fmt.Println("Error:",err) }else { fmt.Println(result) } fmt.Println(apply(pow,3,4)) fmt.Println(apply(func(a int, b int) int { return int(math.Pow(float64(a),float64(b))) },3,4)) fmt.Println(sum(1,3,4,5))
}

go语言参数传递

package main

import ( "fmt"
)

//值传递,拷贝一个新的变量
func f( a int )  { fmt.Println(a) a = 20
}
//引用传递例子
func swap(a , b * int )  { *b, * a = * a ,*b
}

func main()  { var a int = 10 f(a) a,b := 3,4 swap(&a,&b) println(a,b)
}

文章来源: www.jianshu.com,作者:Nick_4438,版权归原作者所有,如需转载,请联系作者。

原文链接:www.jianshu.com/p/d663ca0e1acc

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。