函数的声明和定义是一起的,不存在先声明在定义,且声明时不分前后均可互相调用。
package main
import "fmt"
func print(s string) {
fmt.Println(s)
}
func main() {
print("Hello Codey !")
}
Hello Codey !
可以一次返回多个返回值,Go 语言中如果是单返回值,可以直接在函数声明的括号后面增加数据类型。
func sum(a, b int) int //声明并定义一个返回值为int数据类型的函数
func sum(a, b int) (int, string) //声明并定义一个返回值为int和string数据类型的函数
import "fmt"
func sumAndProduct(a, b int) (int, int) {
c := a + b
d := a * b
return c, d
}
func main() {
sum, product := sumAndProduct(1, 2)
fmt.Println("a + b = ", sum)
fmt.Println("a * b = ", product)
}
a + b = 3
a * b = 2
能直接在返回值处声明变量,这个变量的作用域是整个函数,并且会在 return 的时候直接返回。
package main
import "fmt"
func sumAndProduct(a, b int) (c int, d int) {
c = a + b
d = a * b
return
}
func main() {
sum, product := sumAndProduct(1, 2)
fmt.Println("a + b = ", sum)
fmt.Println("a * b = ", product)
}
a + b = 3
a * b = 2
defer 关键字就是 Go 语言中延迟语句的标志,defer 会在函数即将结束的时候执行,而且是按照 defer 的顺序逆序执行。
import "fmt"
func main() {
defer fmt.Println("1")
defer fmt.Println("2")
defer fmt.Println("3")
fmt.Println("Hello!")
}
Hello!
3
2
1
defer 关键字之后若有变量,则 defer 记录的是在 defer 时的变量值,而不是最后函数结束时的变量值。
package main
import "fmt"
func main() {
a := 10
defer fmt.Println("defer时a的值为", a)
a = 100
fmt.Println("print时a的值为", a)
}
print时a的值为 100
defer时a的值为 10
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。