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} }
扫描二维码关注公众号,回复:
10419884 查看本文章
结构体的序列化:用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转译一下才能正常显示