分享
  1. 首页
  2. 文章

golang 基础(F)函数的参数

zidea · · 2198 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

square-gopher.png

函数

函数是由函数名,参数,返回值和函数体所组成。

func add(a, b int) int {} 

定义函数并且复习一下之前的 switch 语句

func eval(a, b int,op string) int {
 switch op {
 case "+":
 return a + b
 case "-":
 return a - b
 case "*":
 return a * b
 case "/":
 return a / b
 default:
 panic("unsupported operation: " + op)
 }
}

在 go 语言中 { 需要 bar() 在同一行不言就会报错

func bar() //报错
{
}
.\funtions.go:26:6: missing function body
.\funtions.go:27:1: syntax error: unexpected semicolon or newline before {

函数中的参数

定义函数可以没有任何参数就像 main 函数

func main(){
}

定义函数的参数时和其他语言没有什么不同,指定参数名称和参数类型

func sayMessage(msg string){
 // body
}

如果参数类型一致我们可以省略 greeting 后面指定类型

func sayGreeting(greeting, name string){
 fmt.Println(greeting, name)
 
}

我们可以尝试在 sayGreeting 内部修改 name 这个变量,因为函数作用域这些修改name 不会影响到函数外面的 name 值,这是大家的尝试。

func sayGreeting(greeting, name string){
 fmt.Println(greeting, name)
 name ="matthew"
 fmt.Println(name)
}
greeting := "hello"
 name := "zidea"
 sayGreeting(greeting,name)
 fmt.Println(name)

从结果来看

hello zidea
matthew
zidea

外面的 name 值依旧是 zidea 没有发生变化

我们可以将传递变量引用修改为将变量的地址作为参数传给函数

func sayGreeting(greeting, name *string){
 fmt.Println(*greeting, *name)
 *name ="matthew"
 fmt.Println(*name)
}
hello zidea
matthew
matthew
func main(){
 fmt.Println(eval(3,4, "*"))
 greeting := "hello"
 name := "zidea"
 fmt.Println(greeting, name)
}

我们也可以通过(...)来实现函数动态地传入多个参数,这和 es6 语法很相似。

func sum(values ...int){
 fmt.Println(values)
 result := 0
 for _, v := range values{
 result += v
 }
 fmt.Println("The sum is ", result)
}
Golang1.png

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:zidea

查看原文:golang 基础(F)函数的参数

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
2198 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏