这篇文章我们来介绍下在go语言开发中,如何创建及使用方法函数。在go语言中,由于函数是“一等公民”,因此对于函数的使用,go语言没有太多的限制,因此创建及使用方法函数的方式方法有很多种,下面挨个介绍下:
第一种方式:在外部创建无参构造无返回值的函数
这种方式很好理解,就是我们经常使用到的这种类型,示例如下:
func hello() {
fmt.Println("hello")
}然后调用的时候,可以直接调用这个方法即可:
func main() { hello() }
第二种方式:在外部创建无参有返回值的函数
这里其实就相当于当前方法有返回值,也是和我们日常使用的都差不多,示例如下:
type Student struct {
name string
age int
}
func getStudent() Student {
return Student{
name: "张三",
age: 15,
}
}然后再调用的时候,可以直接使用一个变量来赋值即可:
func main() {
s := getStudent()
fmt.Println(s)
}第三种方式:在外部创建一个有参,且有返回值的函数
这里的话,我们就相当于需要向这个参数传递一些值,然后通过这个函数方法进行计算,最后返回内容,示例如下:
type Student struct {
name string
age int
}
func getStudent(p int) Student {
fmt.Println("传递进来的p值是:", p)
return Student{
name: "张三",
age: 15,
}
}然后在调用的时候记得向方法传递参数即可:
func main() {
s := getStudent(1)
fmt.Println(s)
}第四种方式:在外部创建一个方法,返回多返回值的函数
这里就相对于其他语言来说就有点不一样了,例如在java语言中,每个方法的返回值只有1个对象,如果涉及到很多值的话,我们会创建一个对象,然后把这些值放到这个对象里面去,然后再返回这个对象,但是在go语言中,这里就直接支持返回多个值,示例如下:
type Student struct {
name string
age int
sex bool
}
func getStudent() (string, int, bool) {
s := Student{
name: "张三",
age: 15,
sex: true,
}
return s.name, s.age, s.sex
}然后在调用的时候,如果返回了多个值,那么就需要声明多个变量去接收这些值,然后再对这些变量进行操作:
func main() {
var name, age, sex = getStudent()
fmt.Println(name)
fmt.Println(age)
fmt.Println(sex)
}第五种方式:创建匿名函数
匿名函数,顾名思义就是没有名称的方法函数,这里一般常见于一些临时性的逻辑处理,例如:
type Student struct {
name string
age int
sex bool
}
func main() {
student := func(age int) Student {
return Student{
name: "张三",
age: age,
sex: true,
}
}
fmt.Println(student(20))
}匿名函数的话,一般就变成了一个变量的形式,在调用的时候,可以看作是直接在向变量传递值。
第六种方式:定义函数为类型
这里定义函数为类型的话,我们可以理解成定义一个java中的interface,基于这个interface需要去实现具体的方法,然后再通过中间方法进行调用,示例如下:
type op func(a, b int) int
func add(a, b int) int {
return a + b
}
func Oper(fu op, a, b int) int {
return fu(a, b)
}
func main() {
sum := Oper(add, 1, 2)
fmt.Println(sum)
}这里我们基于java语言的惯性理解来解释下上面的代码,首先
type op func(a, b int) int
这里其实就相当于java语言里面创建的一个interface,指定了入参为int类型,并且是2个参数,返回值的类型也为int。
func add(a, b int) int {
return a + b
}这个方法其实相当于在java中我们实现上面interface的具体方法,这个方法可以看的很明白,就是一个实现类。
func Oper(fu op, a, b int) int {
return fu(a, b)
}这个方法是一个中间的方法,我们指定第一个参数为传递进来的interface,也就是实现了上面定义的类型的方法才能被传入进来,然后具体的实现里面我们调用这个实现方法即可。
func main() {
sum := Oper(add, 1, 2)
fmt.Println(sum)
}这就是最后的调用,我们传入的add方法可以看作是基于op的实现方法,就会就可以调用这个add方法的实现逻辑。最后我们看下结果:
以上就是go语言常见的几种使用函数方法的方式。后期还会接触到很多,大家慢慢熟悉的过程中就可以了解到了。



还没有评论,来说两句吧...