美文网首页
go 中的结构体 匿名函数

go 中的结构体 匿名函数

作者: 蛐蛐儿阳 | 来源:发表于2020-05-02 18:53 被阅读0次

    虽然代码我看懂了,比较好理解,但我还是写下笔记和代码,加深下理解。
    声明一个结构体

    type data struct {
        ID int
        Name string
        Address string
        MyList [...]types.Slice
        DoB time.Time
    }
    

    看下 struct 就是结构体的意思, 前方用type修饰, data是结构体名称。
    结构体内只能声明变量或函数或方法名, 不能赋值。
    看下面代码

    type data struct {
        ID int
        Name string
        Address string
        // 切片  我记错了 [] 是切片 [...] 是数组
        MyList []string
        DoB time.Time
        //MyArray [...]string
    }
    
    
    func main()  {
        var d data
        d.Address = "华东区\n"
        fmt.Printf(d.Address)
        fmt.Printf("%v \n", d.DoB)
    
        d.MyList = []string{"a","b", "c"}
        fmt.Printf("%v \n",d.MyList)
        fmt.Printf("%T \t", d.MyList)
    
        p := [...]string{"a", "b", "c", "d"}
        fmt.Printf("%v", p)
    }
    

    []是切片,[...] 这个是数组, 由于数组长度一旦声明不可变, 所以结构体里能放切片不能放数组。 因为结构体不能初始化值, 而数组声明时必须指定长度。

    匿名函数的用法, 看代码

    
    import "fmt"
    
    // 一个词一个词解释
    // func 证明是函数或方法
    //add()  函数名
    // func() int  复杂了, 就这  返回一个函数, 此函数返回int类型
    func add()  func() int{
        var i int
        return func () int {
            i++
            return i
        }
    }
    
    func main()  {
        p := add()
        fmt.Printf("%v \n", p())
        fmt.Printf("%v \n", p())
        fmt.Printf("%v \n", p())
        fmt.Printf("%v \n", p())
    }
    // 返回1,2,3,4
    

    意义:大的方法名add 付给p, 而调用 p(), 只用到了匿名函数, 初始化i并没有起作用。

    相关文章

      网友评论

          本文标题:go 中的结构体 匿名函数

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