Go语言中结构体的使用-第1部分结构体

栏目: Go · 发布时间: 5年前

内容简介:结构体是由成员构成的复合类型。Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性。 结构体成员,也可称之为成员变量,字段,属性。属性要满足唯一性。 结构体的概念在软件工程上旧的术语叫 ADT(抽象数据类型:Abstract Data Type) 数据层面,结构体是自定义数据类型,可以理解成是由一系列具有相同或不同类型的数据构成的数据集合。因此结构体也被称之为抽象数据类型(ADT,Abstract Data Type)。 在Go语言中,结构体承担着面向对象语言中类的作用。Go语言中,结

1 概述

结构体是由成员构成的复合类型。Go 语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性。 结构体成员,也可称之为成员变量,字段,属性。属性要满足唯一性。 结构体的概念在软件工程上旧的术语叫 ADT(抽象数据类型:Abstract Data Type) 数据层面,结构体是自定义数据类型,可以理解成是由一系列具有相同或不同类型的数据构成的数据集合。因此结构体也被称之为抽象数据类型(ADT,Abstract Data Type)。 在 Go 语言中,结构体承担着面向对象语言中类的作用。

Go语言中,结构体本身仅用来定义属性。还可以通过接收器函数来定义方法,使用内嵌结构体来定义继承。这样使用结构体相关操作Go语言就可以实现OOP面向对象编程了。

我们先看结构体相关语法,再看OOP相关的。

2 定义语法

type identifier struct {
    field1 type1
    field2 type2
    ...
}

// 或者 同一类型的字段,可以定义在一行
type identifier struct {
  field1, field2 int
}

3 实例化

Go语言提供了以下几种方法实例化:

// T表示结构体标识符,v结构体变量
var v T 
v := T{} // var v = T{}
v := new(T)
v := &T{} // var v = &T{}

以上方法中, var v Tv := T{} // var v = T{} 会返回结构体变量,而 v := new(T)v := &T{} // var v = &T{} 会返回结构体指针。

4 值类型

注意,结构体是 值类型 ,不是引用类型。因此使用不同方式实例化的,在赋值时效果时不一样的,需要注意。

var v Tv := T{} // var v = T{} 值传递。 v := new(T)v := &T{} // var v = &T{} 引用地址传递。

Go语言会对结构体类型指针做自解析。也就是说,即使获得的是结构体指针,也不需要使用 *v 的语法。

v := &T{}
// 直接使用v.语法即可。自动解析了 *v
v.field
// 相当于,也可以这么用
(*v).field

5 初始化属性

使用类似于键值对的语法初始化结构体属性,但此处的键指的是结构体内字段:

v := T{
  field1: value1,
  field2: value2,
    …
}

如果我们初始化 全部 的结构体字段,可以按照定义 顺序 仅仅使用数据部分即可完成初始化:

// 要满足全部字段,按照定义顺序
v := T{
  value1,
  value2,
  value3,
}

6 . 成员访问运算符点号

要访问结构体成员,需要使用点号 . 操作符,格式为:

v.field
// 获取
fmt.Println(v.field)
// 设置
v.field = new-value

7 匿名结构体

匿名结构体没有类型名称,只有字段和类型定义,无须通过type关键字定义就可以直接使用。匿名结构体的初始化写法由结构体定义和键值对初始化两部分组成。如下所示:

v := struct {
  field1 type1
  field2 type2
}{
  field1: value1,
  field2: value2,
}

注意,匿名结构体,必须要同时初始化,不能仅仅定义匿名结构体。 当需要使用一个临时结构体类型时,可以使用匿名结构体。

第一部分完!后续部分为 构造函数,方法,继承 与OOP相关的内容。 原文出自: 小韩说课 微信关注:小韩说课 Go语言中结构体的使用-第1部分结构体


以上所述就是小编给大家介绍的《Go语言中结构体的使用-第1部分结构体》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

我是一只IT小小鸟

我是一只IT小小鸟

胡江堂、李成、唐雅薇、秦琴、蒋宇东、刘未鹏、居振梁、刘帅、温卫斌、张弦、张凯峰、庄表伟、宋劲杉、程露、黄小明、易晓东、简朝阳、林健、高昂、徐宥、辜新星 / 电子工业出版社 / 2009 / 29.80

一群IT小小鸟—— 来自十几所院校,或男生,或女生;或科班,或半路转行。 分布在不同的公司,或外企,或国企,或民企,老板有土有洋。 有失意,有快意;有泪水,有欢笑。在失望中追求希望,在迷茫中辨别方向。 他们用自己的成长故事,告诉在校的师弟师妹们: 青春太宝贵,千万别浪费;要想不浪费,万事早准备。一起来看看 《我是一只IT小小鸟》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具