Go语言学习笔记(8)——包和结构体
包 —— 每个可执行的应用程序必须包含一个主函数,它是执行的入口点。主函数应该存在main包中。
结构体: 通过 . 操作符访问结构体的各个成员!
1. 定义结构体类型person:
type person struct{ name stringage int }
使用结构体类型定义结构体变量:
P := person{ "星星", 22 } //按顺序初始化
P := person{ age:22, name:"星星" } //使用键值对方式,顺序可以任意
P := new(person); P.age = 22; P.name = "星星" //new方式,未设置初始值时采用默认初始值
2. 结构体指针: 存储结构体变量的地址,也可以通过 . 操作符访问结构体变量的各个成员
var pointer_name *person
3. 匿名字段(类似继承): 不仅仅可以是结构体类型哦,所有的内置类型和自定义类型都可以作为匿名字段。
type Human struct {name stringage intweight float32 } type Student struct {Human // 匿名字段,代表Student包含Human的所有字段/成员special string } 此时对Student实例化: mark := Student{Human{"Mark", 22, 100.0}, "Computer Science"} 注意:可以使用.调用所有属性值(包括匿名字段中的属性), 也可以mark.Human = Huamn{"Mark", 22, 100}; mark.Human.age = 0
4. 结构体嵌套
type Address struct {city, state string } type Person struct {name stringage intaddress Address //结构体类型变量作另一个结构体的成员 } func main() {var p Personp.name = "Naveen"p.age = 50p.address = Address {city: "Chicago",state: "Illinois",}fmt.Println("Name: ", p.name)fmt.Println("City: ", p.address.city)}
5. 导出结构体和导出字段:
如果结构体类型以大写字母开头,那么它就是一个导出类型,可以从其它包中对它进行访问;类似,如果结构体中的字段以大写字母开头,也可以在其它包中访问它们。
在computer目录下,创建文件spec.go
package computer type Spec struct { //exported structMaker string //exported fieldmodel string //unexported fieldPrice int }
创建main.go 文件
import "../structs/computer" //或 import "./computer"或者 import "根目录" import "fmt" func main() {var spec computer.Specspec.Maker = "apple"spec.Price = 50000fmt.Println("Spec:", spec) }
目录结构如下:
src
structs
computer
spec.go
main.go
6. 结构体的比较:
结构体是值类型,如果每个字段都具有可比性,则结构体就是可比较的。
如果两个结构体变量对应字段的值都是相等的,则它们就是相等的!
转载于:https://www.cnblogs.com/skzxc/p/11244377.html
Go语言学习笔记(8)——包和结构体相关推荐
- go struct 静态函数_Go语言学习笔记(四)结构体struct 接口Interface 反射reflect...
加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...
- C语言学习笔记---向函数传递结构信息
传递值 在向函数传递参数的时候,可以直接将结构体成员的值传递给函数.如下面的例子: int sum(int x,int y,int z) {return (x + y + z); }int mai ...
- Go 学习笔记(14)— 结构体定义、实例化、初始化、匿名结构体、结构体访问、结构体作为形参、结构体指针
Go 语言中没有 "类" 的概念,也不支持 "类" 的继承等面向对象的概念.Go 语言不仅认为结构体能拥有方法,且每种自定义类型也可以拥有自己的方法. 1. 结 ...
- 【ESP32S3学习笔记】LVGL相关结构体学习——lv_disp_drv_t
LVGL相关结构体学习--lv_disp_drv_t 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后, ...
- 30天自制OS学习笔记 (五)结构体、文字显示与GDT/IDT 初始化
1.接收启动信息 & 2.试用结构体 & 3.试用箭头符号 在第五天之前,我们都是把vram.xsize.ysize这些值直接写在了bootpack.c文件中.而这些值应从asmhea ...
- swift学习笔记(9)-结构体和类
结构体和类对比 Swift 中类和结构体有很多共同点.共同处在于: * 定义属性用于存储值 * 定义方法用于提供功能 * 定义下标操作使得可以通过下标语法来访问实例所包含的值 * 定义构造器用于生成初 ...
- IOS 学习笔记 2015-03-24 OC-API-常用结构体
一 标题 常用结构体二 API 1 NSRange 表示一个范围 A 实例化 NSRange rg={3,5};//第一参数是起始位置第二个参数是长度B 实例化 NSRange rg2=NSMakeR ...
- C语言学习(九)之结构体
文章目录 一.结构体基础 1.1 什么是结构体 1.2 建立结构声明 1.3 定义结构变量 1.4 初始化结构 1.5 访问结构成员 1.6 结构的初始化器 二.结构数组 2.1 声明结构数组 三.嵌 ...
- go语言学习(3)面向对象,结构体和方法
感觉每种语言都是其他的语言的一些交集,看见go就有种kotlin和C的孩子的感觉,虽然我并不清楚他们之间的借鉴关系 go语言仅支持封装,不支持继承和多态 go语言只有struct没有class go语 ...
- 《Go语言圣经》学习笔记 第二章 程序结构
Go语言圣经学习笔记 第二章 程序结构 目录 命名 声明 变量 赋值 类型 包和文件 作用域 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记,几乎是书上的内 ...
最新文章
- Jack Dongarra/杰克 多加拉
- 惊呆!不用一张图片,却训出个图像识别SOTA?
- html 多个mp3,HTML5 audio 如何实现播放多个MP3音频
- Python的permutations和combinations的区别
- 【三维路径规划】基于matlab人工势场算法无人机三维路径规划【含Matlab源码 168期】
- 微软Windows Hello曝漏洞!外接一个USB摄像头,分分钟破解你的电脑
- excel熵值法计算权重_手把手教你用熵值法计算权重
- python 期末考试复习题(带答案)
- RAID磁盘冗余技术
- 使用搜索引擎搜索指定网站的内容
- 京东小程序开放平台,他来了
- 全像素双核激光对焦拍照是个什么厉害玩意儿
- 异常:Incorrect result size: expected 1, actual 0
- case zhen语句_SQL中的条件判断语句(case when zhen if,ifnull)用法
- TroubleShooting_配置正确的WAU
- Opencv每日函数 图像分割模块 watershed分水岭算法
- RS485总线的抗干扰处理
- php yii2支付宝开发,网站支付宝支付原理及yii2中集成使用教程分享
- source insight php-styles.cf3,【转】SourceInsight 中集成Artistic Style 格式化代码
- DQ坐标系下的PQ值计算