Golang里面没有类,用结构体实现面向对象的编程特性。非常简洁。没有extends,通过匿名字段来实现。Golang中面向接口编程是非常重要的特性。
package main
import (
"fmt"
"encoding/json"
)
func main() {
//结构体的定义
type cat struct {
Name string
Age int
hobby string
}
//map的key为学号,map的值为结构体,包含名字,年龄和地址。
var cat1 cat
cat1.Name="love"
cat1.Age =18
fmt.Println(cat1)
//指针,slice,map需要先Make作为field使用
type Person struct {
Name string `json:"name"` //结构体的标签
Age int `json:"age"`
//Scores [5]float64
//ptr *int
//slice []int
//map1 map[string]string
}
var person1 Person
//person1.slice = make([]int, 10)
//person1.map1 = make(map[string]string)
fmt.Println(person1)
//方式2 推荐
person2 := Person{"tom", 18}
fmt.Println(person2)
//方式3 指针 底层做了优化,可以不用指针的形式
var person3 *Person = new(Person)
person3.Name = "Tom"
person3.Age = 20
fmt.Println(person3)
//方式4 可以直接赋初值,但是所有字段都要赋值
var per *Person = &Person{"marry", 60}
per.Name="da"
//指针 可以改变原变量数值
var p1 Person = Person{"marry", 60}
p1.Name = "Tom"
var p2 *Person = &p1
p2.Name="Love"
fmt.Println("P1:",p1)
//使用tag json序列化 使用json包 结构体field必须大写
jsonStr,err := json.Marshal(person2)
if err != nil{
fmt.Println("出错")
}
fmt.Println(string(jsonStr))
}
有疑问加站长微信联系(非本文作者)