• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

go语言基础二 函数 ,递归函数 ,指针

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

函数的定义:

func 函数名(参数列列表)(返回参数列列表){
    //函数体
}
func funcName (parametername type1, parametername type2...)(output1 type1, output2 type2...) {
    / / 逻辑代码
    // 返回多个值
    return value1, value2...
}

函数定义解析:

   func:函数关键字。 函数由 func 开始声明

  funcName:函数名。 函数名和参数列列表⼀一起构成了了函数签名。 函数名由字⺟母、数字和下划线组成。函数名的第⼀一个字⺟母不不能为 数字。在同⼀一个包内,函数名称不不能重名。               parametername type:参数列列表。 参数就像⼀一个占位符,定义函数时的参数叫做形式参数,形参变 量量是函数的局部变量量;当函数被调⽤用时,你可以将值传递给参数, 这个值被称为实际参数。 参数列列表指定的是参数类型、顺序、及参数个数。 参数是可选的,也就是说函数也可以不不包含参数。 参数类型的简写 在参数列列表中,如果有多个参数变量量,则以逗号分隔;如果 相邻变量量是同类型,则可以将类型省略略。 例例如:func add (a , b int) {} Go语⾔言的函数⽀支持可变参数。接受变参的函数是有着不不定数量量的 参数的。 func myfunc(arg ...int) {} arg ...int告诉Go这个函数接受不不定数量量的参数。注意,这 些参数的类型全部是int。在函数体中,变量量arg是⼀一个int的 slice。

  output1 type1, output2 type2:返回值列列表。 返回值返回函数的结果,结束函数的执⾏行行。 Go语⾔言的函数可以返回多个值。 返回值可以是:返回数据的数据类型,或者是:变量量名+变量量类 型的组合。 函数声明时有返回值,必须在函数体中使⽤用return语句句提供返回 值列列表。 如果只有⼀一个返回值且不不声明返回值变量量,那么可以省略略包括返 回值的括号。 return后的数据,要保持和声明的返回值类型、数量量、顺序⼀一 致。 如果函数没有声明返回值,函数中也可以使⽤用return关键字,⽤用 于强制结束函数。 函数体:函数定义的代码集合,是能够被重复调⽤用的代码⽚片段

 

案例:

// 递归函数

package main import
"fmt" func main() { i := get(3) fmt.Println(i) } func get(num int) int { if num ==1||num ==2 { return 1 } return get(num-1)+get(num-2) }
//多参,多返回值函数

func main() { i :
= get(3) fmt.Println(i) i2, s := gets(1, 2) fmt.Println(i2,s) } func get(num int) int { if num ==1||num ==2 { return 1 } return get(num-1)+get(num-2) } func gets(num,num1 int) (int,string) { return num+num1,"s" }
//可变参数函数
package main import
"fmt" func main() { i := get(3) fmt.Println(i) i2, s := gets(1, 2) fmt.Println(i2, s) num1 := []int{1, 2, 3} i3 := geta(num1...) fmt.Println(i3) } func get(num int) int { if num ==1||num ==2 { return 1 } return get(num-1)+get(num-2) } func gets(num,num1 int) (int,string) { return num+num1,"s" } func geta(num ...int) int { nums :=0; for _ ,v:= range num { nums +=v } return nums }

2 指针

  指针是存储另一个变量的内存地址的变量。
  变量是一种使⽤用⽅便的占位符,变量都指向计算机的内存地址。
    一个指针变量可以指向任何一个值的内存地址。

  那么怎么获取呢:

func main() {
// 声明实际变量
var a int = 120
// 声明指针变量
var ip *int
// 给指针变量赋值,将变量量 a 的地址赋值给 ip
ip = &a
// 打印 a 的类型和值
fmt.Printf("a 的类型是%T,值是%v \n", a, a)
// 打印 &a 的类型和值
fmt.Printf("&a 的类型是%T,值是%v \n", &a, &a)
// 打印 ip 的类型和值
fmt.Printf("ip 的类型是%T,值是%v \n", ip, ip)
// 打印变量量 *ip 的类型和值
fmt.Printf("*ip 变量量的类型是%T,值是%v \n", *ip, *ip)
// 打印变量量 *&a 的类型和值
fmt.Printf("*&a 变量量的类型是%T,值是%v \n", *&a, *&a)
fmt.Println(a, &a, *&a)
fmt.Println(ip, &ip, *ip, *(&ip), &(*ip))
}
import "fmt"

func main() {
    a :=2
    i := &a
    var b *int
    fmt.Println(i)
    fmt.Println(b)
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
通过Mesos、Docker和Go,使用300行代码创建一个分布式系统发布时间:2022-07-10
下一篇:
Go modules: checksum mismatch发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap