(四)go语言函数&参数传递
【摘要】 go语言函数基本语法// func funcationname(a, b int,op string) int 例子package mainimport ( "fmt" "math" "reflect" "runtime")//函数声明func add(a, b int ) int { return a+b}//有多个返回值的函数func div(a ,b...
go语言函数
基本语法
// func funcationname(a, b int,op string) int
例子
package mainimport ( "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 mainimport ( "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)
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)