zoukankan      html  css  js  c++  java
  • 32_匿名字段的使用

    匿名字段相当于c语言里面的继承,即在结构体中继承父结构体,只需要写父结构体的结构体名字,不写结构体的类型

    实例如下:
    package main
    
    
    import "fmt"
    
    
    //定义一个结构体,存储学生信息
    //要想被不同的包调用结构体,则结构体的名字首字母要大些,里面的变量名也要大写
    type Student struct {
    	//和变量定义不同,不要写var关键字
    	Id   int
    	Name string
    	Sex  byte
    	Age  int
    	Addr string
    }
    type Person struct {
    	//继承student结构体
    	Student //所谓匿名字段,就是只写结构体(变量)名字,而不写其类型
    
    
    	Hobby   string
    	Country string
    }
    
    
    func main() {
    	//顺序初始化,如果包含另一个结构体,则需要表明属于哪个结构体 eg:Student{1, "zhao", 'm', 24, "js"}
    	p := Person{Student{1, "zhao", 'm', 24, "js"}, "song", "china"}
    	fmt.Println(p)
    	//p1 := Person{1, "zhao", 'm', 24, "js", "song", "china"}//报错,表明字段都属于Person
    
    
    	//部分初始化,里面的结构,要注意如何初始化
    	p2 := Person{Student: Student{Id: 2, Name: "mike"}, Hobby: "running"}
    	fmt.Println("p2===>", p2)
    	//%+v,可以详细打印结构体成员
    	fmt.Printf("p2=%+v
    ", p2)
    	//p2={Student:{Id:2 Name:mike Sex:0 Age:0 Addr:} Hobby:running Country:}
    
    
    	//成员操作
    	p.Addr = "zg"
    	fmt.Println(p.Addr)
    	//操作继承来的成员
    	p.Id = 2
    	fmt.Println(p.Id)
    	//可以给继承结构体整体赋值
    	p.Student = Student{3, "li", 'w', 23, "hb"}
    	fmt.Println("p==>", p)
    
    
    }
    每天的价值就是不停息的前进!!!
  • 相关阅读:
    dp uva1025
    dp uva10003
    dp最优矩阵相乘poj1651
    dp uva11584
    动态规划uva11400
    流形学习 (Manifold Learning)
    tf.nn.embedding_lookup
    word2vec
    word2vec 细节解析1
    collections-Counter
  • 原文地址:https://www.cnblogs.com/zhaopp/p/11565194.html
Copyright © 2011-2022 走看看