zoukankan      html  css  js  c++  java
  • Go之结构体进阶

    package main
    
    import "fmt"
    import "encoding/json"
    // import "strings"
    
    // 匿名结构体
    type address struct{
    	city string
    }
    type person struct{
    	// 结构体的匿名字段
    	string
    	int
    	// 结构体的匿名嵌套
    	address
    }
    
    // 结构体的继承
    type Animal struct{
    	name string
    }
    func (a *Animal)move(){
    	fmt.Printf("%s 会动
    ", a.name)
    }
    type Dog struct{
    	Feet int8
    	*Animal
    }
    
    
    type class struct{
    	Title string
    	Students []string
    }
    
    func main() {
    	p1 := person{
    		"小王子",
    		18,
    		address{
    			"上海",
    		},
    	}
    	fmt.Println(p1)
    	// 通过类型访问
    	fmt.Println(p1.string)
    	fmt.Println(p1.address.city)
    	// 可以直接访问它嵌套的结构体的属性
    	fmt.Println(p1.city)
    
    	d1 := Dog{
    		4,
    		&Animal{
    			"贝贝",
    		},
    	}
    	fmt.Println(d1)
    	// 结构体嵌套实现继承
    	d1.move()
    
    	// 结构体字段的可见性与JSON序列化
    	// 结构体中字段大写开头表示可公开访问
    	// 小写表示私有(仅在定义当前结构体的包中可访问)
    
    	c1 := class{
    		Title: "三年二班",
    		Students: []string{"李红", "李白"},
    	}
    	fmt.Println(c1)
    
    	// json序列化:Go语言中的数据-> JSON格式的字符串
    	// 得到的是[]byte类型
    	data, err := json.Marshal(c1)
    	fmt.Println(string(data))
    	fmt.Println(err)
    
    	// 反序列化
    	jsonStr := "{"Title":"三年二班","Students":["李红","李白"]}"
    	var c2 class
    	err2 := json.Unmarshal( []byte(jsonStr), &c2)
    
    	fmt.Println(c2)
    	fmt.Println(err2)
    }
    
    
  • 相关阅读:
    设计模式-适配器模式
    设计模式-模板方法模式
    设计模式-策略模式
    spring-消息
    spring-集成redis
    spring-mvc高级技术
    spring-AOP
    restful规范
    十一,装饰器详解
    十,函数对象,嵌套,名称空间与作用域,闭包函数
  • 原文地址:https://www.cnblogs.com/cl94/p/13805999.html
Copyright © 2011-2022 走看看