博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go 修改结构体方法_Go语言基础:结构体
阅读量:5976 次
发布时间:2019-06-20

本文共 1755 字,大约阅读时间需要 5 分钟。

导读

在阅读本文章前,假定你具备如下能力:

⏩ 已掌握Go语言的数据类型

⏩ 已掌握流程控制

1. 结构体

a7e542a451840da13a45de8efe8dcb06.png

1.1 结构体概念

我们之前的流程控制,基本是在函数中处理,如下所示:

package mainimport "fmt"/**for 循环演示案例 */func main(){  NumberAndSum()}// 打印1~100之间所有是7的倍数的整数的个数及总和func NumberAndSum(){  var sum uint64 = 0  var count uint64 = 0  var max uint64 = 100  var i uint64 = 1  for ;i<=max;i++{  if i%7 == 0{  count ++ sum += i  }  }  fmt.Printf("count=%v sum=%v",count,sum)}

从上面的代码我们可以看到,基本是一些散列的数据在进行计算。这里为什么说是一些散列的,因为这些数据都没有归属,只为了完成一些计算而存在。可是,当我们需要重复利用这些数据或者归并这些数据的时候,就显得无从下手。那么有没有可能将这些散列的数据归并到一起,多次使用或者合理使用呢?答案是肯定的,在程序世界里,比如Java,就有面向对象的思想,那么在go语言中也同样存在该内容。

概念:结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。

1.2 结构体语法

结构体定义需要使用type和struct语句。struct语句定义一个新的数据类型,结构体中有一个或多个成员。type语句设定了结构体的名称。结构体的格式如下:
03fc632e610740a3ddec1caf05468f46.png

一旦定义了结构体类型,它就能用于变量的声明,语法格式如下:

member definition

1.3 结构体案例说明

  • 需求说明
定义一个结构体,命名为"Person",包含成员变量:年龄、姓名
  • 案例代码
package mainimport "fmt"func main(){ fmt.Println(Person{18,"KangKang"})}// 编写结构体“Person”,并定义成员变量Age、Nametype Person01 struct { Age int Name string}

1.4访问结构体成员

当我们编写一个结构体,其目的是整合不同数据不同类型的集合供外部调用。那么我们要如何访问结构体成员呢?

1.4.1 语法结构

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

结构体.成员名

1.4.1 案例说明

  • 需求说明
结合上面代码,对姓名和年龄进行访问
  • 案例演示
package mainimport "fmt"func main(){ person:=Person{18,"KangKang"} fmt.Println("年龄为:",person.Age) fmt.Println("姓名为:",person.Name)}// 编写结构体“Person”type Person struct { Age int Name string}

1.5结构体比较

⏩ 如果结构体的所有成员变量都可以比较,那么这个结构体就是可比较的

⏩ 两个结构体的比较可以使用==或者!=。其中 == 操作符按照顺序比较两个结构体变量的成员变量

1.5.1 案例

package mainimport "fmt"func main(){ p:=Person01{18,"KangKang"} p1:=Person01{22,"LiSa"} fmt.Println("Age:",p.Age == p1.Age) // ====> Flae fmt.Println("Name:",p.Name == p1.Name) // ====> Flae fmt.Println("P:",p == p1) // ====> Flae}// 编写结构体“Person01”type Person01 struct { Age int Name string}// 编写结构体“Person01”type Person03 struct { Age int Name string}

注:修改代码无显示的问题

转载地址:http://kxiox.baihongyu.com/

你可能感兴趣的文章
Notification弹出实现
查看>>
HDU 5845 Best Division
查看>>
记一次web项目总结
查看>>
Android中的像素单位详解( dp 、 sp 、 px 、 in 、 pt 、 mm )
查看>>
IIS服务无法启动的小实验之MachineKeys文件夹
查看>>
SQL Server 2008 系列简介
查看>>
C++模板实现动态顺序表(更深层次的深浅拷贝)与基于顺序表的简单栈的实现...
查看>>
树莓派raspberry pi配置无线路由器AP
查看>>
【转载】使用WIN32API获取打印机
查看>>
STORM_0002_在做好的zookeeper集群上搭建storm的开发环境
查看>>
Java命名规则
查看>>
《Python从小白到大牛》第7章 运算符
查看>>
博科:毫不迟疑地入软件网络时代
查看>>
玩转开放式虚拟格式,实战迁移虚拟机到vSphere 5
查看>>
轻松实现远程批量拷贝文件脚本(女学生作品)
查看>>
Nmap在pentest box中的扫描及应用
查看>>
测试组合索引
查看>>
四、物理优化(2)索引视图
查看>>
【沟通之道】头脑风暴-女人的心思你别猜
查看>>
redux-form(V7.4.2)笔记(一)
查看>>