这篇文章我们来介绍下在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语言常见的几种使用函数方法的方式。后期还会接触到很多,大家慢慢熟悉的过程中就可以了解到了。
还没有评论,来说两句吧...