<>

作者: 凹大猫的鱼 | 来源:发表于2018-09-29 15:00 被阅读0次

使用函数的正确姿势#


什么是高阶函数?

1.接受其它的函数作为参数

2.把其它函数作为输出结果

满足任意一点都可以称为高阶函数!!

package main

import "fmt"

type funcVar func()

func func1(f funcVar){
    f()
}

func func2(){
    fmt.Println("I'am a function")
}

func func3() func(){
    return func() {
        fmt.Println("I'am an internal function")
    }
}
func main(){
    var f funcVar
    f = func2
    func1(f)
    a := func3()
    a()
}

闭包的概念

闭包个人了解就是函数和局部变量行成一个代码块,这样函数在后面可以访问到变量。感觉像是延迟调度。

package main

import "fmt"

type funcVar func()
func main(){
    var a funcVar
    a = func(i int)(func()){
            return func() {
                fmt.Println(i)
            }
    }(5)
    a()
}

函数参数的改变


传入函数的参数如果是引用类型,那么会被改变,如果是值类型,那么不会被改变!!!!

对于复合类型

complex := [3][]int{
    []int{1,2}
    []int{3,4}
    []int{5,6}
}

如果更改数组的值比如在函数内部

complex[1]= []int{7,8}//没用!!!

但如果

complex[1][0] = 7//这样就会被改变了

问题

复合类型传入函数后,这个函数中对该值的修改会影响到它的值吗?

上面说过了,看你的修改方式

函数真正拿到的参数值其实只是他们的副本,那么返回给调用方的结果值也是复制的吗?

如果返回的是值,那么是复制的,如果是地址,那么就不会复制。

func func4() *int{
a := 10
fmt.Println(&a)
return &a
}

func func5() int{
    a := 10
    fmt.Println(&a)
    return a
}

func main(){
    /*var f funcVar
    f = func2
    func1(f)
    a := func3()
    a()*/
    b := func4()
    fmt.Println(b)
    c := func5()
    fmt.Println(&c)
}

相关文章

  • <>

    使用函数的正确姿势# 什么是高阶函数? 满足任意一点都可以称为高阶函数!! 闭包的概念 闭包个人了解就是函数和局部...

  • Go核心36讲笔记

    Part1 .GO 语言安装的时候主要有三个环境变量:GOROOT、GOPATH 和 GOBIN通过 go env...

  • <>

    第一章重点: 该系列主要对郝林老师的课程做个人总结!!!文章在个人git下面,README里面写了郝林老师的课程地...

  • <>

    第二章重点: Go 的源码文件分类: 在第一章的时候已经提及到了这个关键问题: GO语言的flag包: 微课堂主要...

  • <>

    第三章重点: 第三章主要讲的是代码的管理,在第一章里面有的东西已经写进去了,这里按照老师的课程总结一下: 1. 同...

  • <>

    第四章重点: 变量的声明方式 go语言的类型推断有哪些好处 函数重声明的意思 代码块概念: 重声明的前提条件 思考...

  • <>

    第五章重点: 这一章主要是讲了go语言的模块的嵌套和查找规则 思考题 如果我们在go语言查找标识符范围的时候,用了...

  • <>

    第六章重点: go语言数据类型:基础类型(数字,字符串,布尔类型),复合类型(数组,结构体),引用类型(指针,切片...

  • <>

    数组和切片 切片和数组的区别 数组是属于值类型。结构体,基础类型数据也属于值类型。 注意GO语言对于“传值和传引用...

  • <>

    container里面的容器 主要介绍了list的使用规则,主要重点都是围绕使用来的。注意下面几点即可: 链表的开...

网友评论

      本文标题:<>

      本文链接:https://www.haomeiwen.com/subject/jntboftx.html