美文网首页
15 Golang结构体详解(一)

15 Golang结构体详解(一)

作者: learninginto | 来源:发表于2021-03-26 18:54 被阅读0次

    Golang中没有“类”的概念,Golang中的结构体struct和其他语言中的类有点相似。和其他面向对象语言中的类相比,Golang中的结构体具有更高的扩展性和灵活性。

    结构体的定义
    type 类型名 struct {
        字段名 字段类型
        字段名 字段类型
    }
    

    字段名:表示结构体字段名,必须唯一

    类型名:表示结构体字段名,在同一个包内不能重复

    结构体的实例化
    • 方式一

    var 结构体实例 结构体类型

    type Person struct {
        name string
        age int
        sex string
    }
    
    func main() {
        var p1 Person
        p1.name = "张三"
        p1.sex = "男"
        p1.age = 20
        fmt.Printf("值:%v 类型%T\n", p1, p1)
        //值:{张三 20 男} 类型main.Person
    }
    

    在Golang中支持对结构体指针直接使用.来访问结构体成员。p2.name = "张三",其实在底层是(*p2).name = "张三"

    • 方式二
    type Person struct {
        name string
        age int
        sex string
    }
    
    func main() {
        var p2 = new(Person)
        p2.name = "李四"
        p2.age = 20
        p2.sex = "男"
        (*p2).name = "王五"
        fmt.Printf("值:%v 类型:%T", p2, p2)
        //值:&{王五 20 男} 类型:*main.Person
    }
    
    • 方式三(&)
    type Person struct {
        name string 
        age int 
        sex string
    }
    
    func main(){
        var p3 = &Person{}//把Person结构体的地址,赋值给指针p3
        p3.name = "赵六"
        p3.age = 23
        p3.sex = "男"
        fmt.Printf("值:%v 类型:%T\n", p3, p3)
        //值:&{赵六 23 男} 类型:*main.Person
    }
    
    • 方式四(键值对)
    type Person struct {
        name string 
        age int 
        sex string
    }
    
    func main(){
        var p4 = Person {
            name : "哈哈",
            age : 6,
            sex : "男",
        }
        fmt.Printf("值:%v 类型:%T\n", p4, p4)
        //值:{哈哈 6 男} 类型:main.Person
    }
    
    • 方式五

    有的字段可以不去赋值

    type Person struct {
        name string 
        age int 
        sex string
    }
    
    func main(){
        var p5 = &Person {
            name : "嘎嘎",
            age : 6,
        }
        fmt.Printf("值:%v 类型:%T\n", p5, p5)
        //值:&{嘎嘎 6} 类型:*main.Person
    }
    
    • 方式六(省略key)

    注意:使用这种方法需要将值一一对应

    type Person struct {
        name string 
        age int 
        sex string
    }
    
    func main(){
        var p6 = &Person {
            "尼古拉",
            29,
            "男",
        }
        fmt.Printf("值:%v 类型:%T\n", p6, p6)
        //值:&{尼古拉 29 男} 类型:*main.Person
    }
    

    相关文章

      网友评论

          本文标题:15 Golang结构体详解(一)

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