美文网首页
结构struct-GOLANG

结构struct-GOLANG

作者: 与子笑 | 来源:发表于2018-05-20 10:31 被阅读0次

    golang  @amazeUI  2017-09-12 13:51:56

    type person struct {

        Name string

        Age  int

    }

    type user struct {

        Name string

        Age  int

        Info struct { //结构体嵌套一个匿名结构体

            Phone string

            City  string

        }

    }

    type test struct { //声明一个匿名字段struct

        string

        int

    }

    type human struct {

        Sex  string

        Name string

        Age  int

    }

    type student struct {

        human

        Parent_phone string

    }

    type teacher struct {

        human   //将上面的human组合进来

        Subject string

    }

    func main() {

        //struct结构体

        a := person{Name: "hk"} //可以把这个struct看做成一个php对象与json对象的组合

        a.Age = 13              //可以这样用.取值和赋值

        fmt.Println(a)

        A(a)           //从这里能够看出来,这里传递过去的是一个值的拷贝,在A函数里面对这个struct的修改并不会影响到a

        fmt.Println(a) //如果加&符号,则是引用传递,修改就会改变原有的值

        b := struct {  //匿名结构体

            Name string

            Age  int

        }{ //在声明struct的同时,可以声明值

            Name: "pp",

            Age:  11, //这里结尾必须要加上逗号

        }

        fmt.Println(b)

        c := user{Name: "pys", Age: 14} //第一层可以这样给结构体内的字段赋值

        c.Info.Phone = "iphone4s"       //匿名结构体只能勇敢这种方式给赋值

        c.Info.City = "shanghai"

        fmt.Println(c)

        d := test{"test", 4} //匿名字段结构体直接按照声明字段顺序赋值

        var e test

        e = d //同个struct可以直接赋值,非同个struct不可以进行比较

        fmt.Println(d == e)

        //golang之中没有面向对象,但是可以通过一些特性实现一些面向对象的特性例如继承,在go里面叫包含

        //上面声明了三个结构,human,studen,teacher,按面向对象来做的话,他们都需要继承human,因为

        //human里的属性包含了一个人最基本的属性,但是学生和老师又不一样

        t1 := teacher{Subject: "语文", human: human{Sex: "男"}} //对于有组合的结构体来说

        //这个human只是一个字段,后一个human才代表human这个结构体,所以可以这样赋值

        t1.Age = 15 //因为是组合过来的,所以也可以这样赋值

        fmt.Println(t1)

    }

    func A(per person) {

        per.Age = 19

        fmt.Println(per)

    }

    相关文章

      网友评论

          本文标题:结构struct-GOLANG

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