Go 结构体- 面向对象编程

Go 支持创建解构题

例如描述一个小猫

type cat struct{//小猫结构体
	name string //姓名
	age int	//年龄
	color string //颜色
}

 Go面向对象编程说明:

1.Go支持面向对象编程,但是和传统的面向对象编程是有区别的,并不是纯粹的面向对象语言,所以说Go支持面向对象

2.Go没有class类,但是Go的struct结构体和其他语言的class有着同等地位,

3.Go面向对象编程非常简单,去掉了传统的OOP语言的继承、重载、构造、析构函数和this指针

4.Go仍有面向对象的封装继承多态的特性,只是实现方法和其他OOP语言不一样。比如继承:Golang没有extends关键字,继承是通过匿名字段来实现的

5.Go的面向对象很优雅,OOP本身就是该语言系统的一部分,通过接口关联,耦合性底,非常灵活,Golang也是面向接口编程。

创建结构体和访问结构体中的字段:

创建结构体对象有多种方法如下:

package main

import(
	"fmt"
)

type cat struct{//小猫结构体
	name string //姓名
	age int	//年龄
	color string //颜色
}

func main(){
	var cat1 cat
	cat1.name = "花花"
	cat1.age = 1
	cat1.color = "yello"
	fmt.Println(cat1) //输出{花花 1 yello}

	//匿名拷贝
	cat2 := cat{
		name : "喵喵",
		age : 2,
		color : "black",
	}
	fmt.Println(cat2) //输出{喵喵 2 black}

	cat3 := new(cat)//这个new出来的是个指针
	cat3.name = "小白"
	cat3.age = 3
	cat3.color = "white"
	fmt.Println(*cat3) //输出{小白 3 white}

	cat4 := &cat{}//这个new出来的是个指针
	cat4.name = "波波"
	cat4.age = 1
	cat4.color = "green"
	fmt.Println(*cat4) //输出{波波 1 green}
}

结构体的序列化:用json的Marshal方法

package main

import(
	"fmt"
	"encoding/json"
)

type Person struct{
	Name string
	Age int
	Addr string
	Hobby []string
}

func main(){
	var p = &Person{
		Name:"波波",
		Age:18,
		Addr:"武汉",
		Hobby:[]string{
			"Golang",
			"Game",
			"Move",
		},
	}
	data,_ := json.Marshal(p)
	fmt.Println(data)
	fmt.Println(string(data))
}

 Marshal后需要用string转译一下才能正常显示

猜你喜欢

转载自www.cnblogs.com/flycc/p/12623402.html