美文网首页
Go语言结构体快速入门

Go语言结构体快速入门

作者: Jaeyok | 来源:发表于2020-11-20 16:44 被阅读0次
    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))
    }
    

    相关文章

      网友评论

          本文标题:Go语言结构体快速入门

          本文链接:https://www.haomeiwen.com/subject/yjldiktx.html