Go语言结构体快速入门

2020-11-20  本文已影响0人  Jaeyok
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))
}
上一篇下一篇

猜你喜欢

热点阅读