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转译一下才能正常显示


浙公网安备 33010602011771号