关于Golang中`函数`的初步认识和理解(一)

前言:我最近在面试,作为一个刚刚入门的初学者,每次面试都一两个小时,更可恶的是,我上周三去面试,上来那个人就给我的简历一顿批,说我的能力不如培训三个月的人,让我无言以对,他说,我为啥不找一个培训班培训三个月的,出来给我干活呢,还便宜一个月也就4k,哎,我去tmd的,很让人生气,而且我面试之前跟hr说过,我就是两年经验,去了还叨叨叨的,面试我的那个人说是某里的,就觉得顿时让我对某里印象不好了

说回主题:我在这里说一下啊,我呢,其实也是在B站,腾讯课堂之类的网站看视频然后自己敲过之后,想把每一部分知识弄成一个体系,最主要的目的就是自己心里有个衡量和体系,不然我自己也心里发慌,觉得自己没学什么,我写的也是大白话,如果同学看见了觉得不好你就关了浏览器,也不是我让你看的,如果你看了几篇文章突然在我这里看懂了,也不用给我发钱,因为也不是我自己的功劳。

压文诗—洛神赋:践远游之文履,曳雾绡之轻裾。微幽兰之芳蔼兮,步踟蹰于山隅。

如果同学没有编程语言的基础,我不是特别建议直接看博客,还是看视频来的快,看完视频再来看看博客,这也许是一种不错的选择!

函数的定义: 为了完成某一功能的程序指令(说白了就是一系列语句)的集合
在Go中,函数分为:自定义函数和系统函数(Go自带的函数)

函数的基本语法

func 函数名(形参列表) (返回值) {
			执行的语句......
			return   返回值列表
}
注释:
1.形参列表我就不说了啊,就是形式上的参数,表示函数的输入
2.返回值: (首先说函数可以有返回值,也可以没有返回值) 如果有返回值就有以下的说法 Go跟我之前用的PHP有不一样的地方在于,PHP是只能返回一个值,或者一个数组/json等,
Go呢,它是可以返回多个值,就比如你返回两个字符串,也是可以的
3.执行语句:就是为了实现某一特定功能的语句
4.同学请注意一下,我在返回值用了一个括号,其实呢,如果返回值只有一个(返回值) 可以不写括号(你写了,编译器也会报什么Redundant parentheses,多余括号)

函数的调用

package main

import (
	"2020-05-31-day01/06func/util"
	"fmt"
)
func main() {
	text :=util.Pub()
	currentFunc()
	fmt.Println(text)
}

func currentFunc()  {
	fmt.Println("main包中的currentFunc函数")
}
package util

func Pub() string {

	return "这是util包中的Pub方法"
}
注释:
1.函数调用有两种方式,容我细细道来(这里还没写系统函数,待到我之后在写)
第一种:我写的栗子是我在util包中写了一个Pub函数,在main包调用,调用的时候就是(包名.函数名)
第二种:就是我在main包中的写的currentFunc函数,直接写函数名就可以啦

关于值类型和引用类型的解释说明

先提前说个东西:内存中啊,有一个空间,空间里有个值(string “daniel”),空间叫个名字,比如xx0000

值类型: 啥叫值类型呢,我就是这么理解的,每次使用这个daniel变量的时候,我们啊,复制一个daniel变量就是值类型

引用类型:啥叫引用类型呢,我是这么理解的,每次使用这个daniel变量的时候啊,我们直接使用这个内存空间的名字,使用的语法就是用这个 (&)

区别: 值类型不会改变原本的值,但是引用类型就会改变原本的值

函数的使用细节以及注意事项

第一个: 函数的形参列表可以是多个,返回值列表也可以是多个
第二个:函数的命名遵顼标识符命名规范,首字母不能是数字
第三个:函数名的首字母大写,就说明这个函数可以被其他的包使用,类似于public,如果函数名的首字母小写,只能被本包文件使用,类似于private
第四个:函数的变量是局部的,函数外不生效(函数作用域),这里可以这么理解(函数内可以使用全局变量,函数外不可使用局部变量)
第五个: 形参列表和返回值列表的数据类型可以是值类型和引用类型

你可能感兴趣的:(Golang)