结构 struct golang

与子笑 · · 1010 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:与子笑

查看原文:结构 struct golang

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1010 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传