当前位置: 首页 > news >正文

golang学习-结构体

1、定义

使用type 和struct 关键字来定义结构体,是值类型

格式如下:

type 类型名 struct {

        字段名 类型

        字段名 类型

        ...

}

2、实例化

1、var 结构体实例 结构体类型    var p1 Person  

2、使用new关键字   var p2 = new(Person)

3、使用&对结构体进行取地址操作 p3:=&Person{}

第二种和第三种返回的是指针类型

4、键值对初始化

p4:= Person {

        name :"李四",

}

5、&取内存地址

p5:=&Person{

        name :"李四",

}

6、简写 不指名key 直接写value

p6:=&Person{

        "张三

"

}

 结构体首字母大写表示结构体共有,在其他包里可以使用。首字母小写表示结构体私有,只能在这个包里使用。

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

3、结构体的匿名字段

结构体允许成员字段声明时没有字段名只有类型,这种没有名字的字段叫匿名字段。匿名字段默认采用类型名作为字段名,因此类型不能重复。

type Person {

        string

        int

}

4、结构体嵌套

当访问结构体成员时会先在结构体中查找该字段,找不到再去匿名结构体中查找、

type User struct {Username stringAge      intAddress  Address
}
type Address struct {Name  stringphone string
}func main() {var u = new(User)u.Username = "张三"u.Age = 20u.Address.Name = "不会"u.Address.phone = "1233"// fmt.Printf("%#v", u)fmt.Println(&u.Address)
}

 golang中使用结构体嵌套来实现继承。

相关文章:

  • What is `@ResponseBody` does?
  • 11 最小字符子串
  • 双目测距工程Stereo-Vision-master学习笔记
  • ElasticSearch扫盲概念篇[ES系列] - 第500篇
  • Scrum的工件
  • vlc播放rtsp视频流
  • Node.js基础知识点(四)
  • Python - Bert-VITS2 语音推理服务部署
  • 【第七在线】打破传统束缚:智能商品计划助力服装企业创新发展
  • Go新项目-为何选Gin框架?(0)
  • 【贪心】数组大小减半
  • MySQL基础笔记(6)函数
  • 第一章 通信职业道德
  • 性能压力测试:企业成功的关键要素
  • linux 文件打包 / 分割 / 组合 / 解压
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【mysql】环境安装、服务启动、密码设置
  • Android组件 - 收藏集 - 掘金
  • CAP 一致性协议及应用解析
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • JAVA多线程机制解析-volatilesynchronized
  • mysql_config not found
  • pdf文件如何在线转换为jpg图片
  • React Transition Group -- Transition 组件
  • Redis的resp协议
  • 对超线程几个不同角度的解释
  • 给Prometheus造假数据的方法
  • 力扣(LeetCode)22
  • 如何合理的规划jvm性能调优
  • 如何学习JavaEE,项目又该如何做?
  • 一份游戏开发学习路线
  • 自制字幕遮挡器
  • 进程与线程(三)——进程/线程间通信
  • (4)STL算法之比较
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (pytorch进阶之路)扩散概率模型
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (转)Unity3DUnity3D在android下调试
  • .net 简单实现MD5
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .Net多线程总结
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • [android] 天气app布局练习
  • [APIO2012] 派遣 dispatching
  • [bug总结]: Feign调用GET请求找不到请求体实体类
  • [C语言]——内存函数
  • [hdu 4552] 怪盗基德的挑战书
  • [HTML]Web前端开发技术30(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [I2C]I2C通信协议详解(一) --- 什么是I2C
  • [iOS开发]事件处理与响应者链
  • [JavaWeb]——过滤器filter与拦截器Interceptor的使用、执行过程、区别
  • [JavaWeb玩耍日记]Maven的安装与使用