美文网首页
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结构体详解(一)

    Golang中没有“类”的概念,Golang中的结构体struct和其他语言中的类有点相似。和其他面向对象语言中的...

  • 16 Golang结构体详解(二)

    结构体方法和接受者 在go中,没有类的概念但是可以给类型(结构体、自定义类型)定义方法。所谓方法就是定义了接受者的...

  • 18 Golang结构体详解(四)

    结构体和Json相互转换 当Golang要为App或者小程序提供Api接口数据时,涉及到结构体和Json之间的相互...

  • 17 Golang结构体详解(三)

    一、结构体嵌套 demo1 嵌套匿名结构体 关于嵌套结构体的字段名冲突(就近原则) 当两个子结构同级、就近原则不法...

  • Learn Golang In Day 9

    Learn Golang In Day 9 简介 结构体是自定义的数据结构 定义结构体 package main ...

  • golang 加载jison而无需定义一堆结构体

    golang 加载jison而无需定义一堆结构体

  • golang 结构体

     一个结构体类型可以包含若干个字段,也可以不包含任何字段。空结构体可以关联上一些方法,从而看成是函数的特殊版本。 ...

  • Golang:结构体

    结构体 结构体(struct)是用户自定义的类型,代表若干字段的集合。有时将多个数据看做一个整体要比单独使用这些数...

  • Golang结构体

    C++中结构体(struct)和类(class)的主要区别有: struct没有权限控制字段 struct没有方法...

  • golang结构体

    定义 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合 结构体的定义 结构体定义需要使用 type 和 ...

网友评论

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

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