golang学习三:函数, 内存, 工程管理:

一、函数的基本语法:

1. 语法:

// 函数定义
func 函数名([参数1 类型, 参数2 类型, ...]) {
	函数体;
}

// 函数调用
函数名([参数1, 参数2, ...])

2. 不定参数列表:

// 函数定义
func 函数名(args...int) {
	// args: 自定义不定参数名, 是一个array
	函数体;
}

3. 函数的返回值:

语法:

func 函数名([参数列表 参数类型]) 返回值类型 {
	函数体
	return 返回值
}

var res 参数类型
res = 函数名([参数列表])

示例:

func test(a, b int) (c, d, sum int) {
	sum = a + b
	c = a
	d = b
	return
}

func main() {
	_, _, res := test(2, 3)
	fmt.Println(res)	// 5
}

二、内存:

1. 栈区存储原理:

2. 函数返回值:

3. 函数的嵌套调用:

三、函数:

1. 函数类型:

函数名表示一个地址, 函数在代码区的地址;
函数类型: func

var fun func(int, int)

函数类型别名:

type FUNCDEMO func(int, int)	// 类型别名

var f FUNCDEMO

func demo(a,b int) {
	return a+b
}
f = demo1
res := f(2,3)

2. 函数作用域:

3. 匿名函数与闭包:

在一个函数中定义另一个函数;

func main() {
	var num int
	num = 9;
	f := func() {
		num ++
		fmt.Println(num)	// 10
	}
	f()
	fmt.Println(num)	// 10
}

闭包:

在go语言中,所有的匿名函数都是闭包

func test() func() int {
	var x int
	return func() int {
		x++
		return x
	}
}
func main() {
	f := test()
	fmt.Println(f())	// 1
	fmt.Println(f())	// 2
	fmt.Println(f())	// 3
}

4. 递归函数:

func fib(x int) int {
	if x == 1 {
		return 1
	}
	if x == 2 {
		return 1
	}
	return fib(x-1) + fib(x-2)
}

func main() {
	fmt.Println(fib(10))	// 55
}

四、工程管理:

1. 同级别多文件:

.
├── main
├── main.go
└── test.go

package的包名要一致

// test.go

package main

import "fmt"

func test() {
	fmt.Println("test")
}

// main.go
package main

import "fmt"

func main() {
	fmt.Println(1234)
	test()
}

命令行执行go build 文件列表生成main二进制文件;
./main执行二进制文件;

2. 不同级别多文件:

没有实现, 后期解决

.
└── src
    ├── main.go
    ├── test.go
    └── userinfo
        └── userlogin.go
// main.go
package main

import (
	"fmt"
	"userinfo"
)

func main() {
	fmt.Println(1234)
	test()

	// 夸包调用
	// 包名.函数名()	(函数首字母大写)
	userinfo.UserInfo()
}
// userlogin.go

package userinfo

import "fmt"

// 不同目录, 包名不同

// 包内函数的开头字母要大写
func UserInfo() {
	fmt.Println("登录成功...")
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浅弋、璃鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值