// 结构体定义时初始化books :=[]Book{Book{"alpha",200,},Book{"spider",200,},}books[0].Price=500
//结构体定义完后,初始化book1 :=[2]Book{}book1[0].Price =100book1[0].Title="alpha"book1[1].Price =300
//  struct匿名成员(字段、属性)package mainimport "fmt"type Person struct {Name stringAge  int
}
type Student struct {score  stringAge    intPerson // 匿名内嵌结构体
}func main() {var stu = new(Student)stu.Age = 22                         //优先选择Student中的Agefmt.Println(stu.Person.Age, stu.Age) // 0,22var stu2 = Student{score: "100",Age:   20,Person: Person{Name: "alpha",Age:  18,},}fmt.Println("stu2: ", stu2)
}
package mainimport ("fmt""unsafe"
)
// 大写是公开,小写是私有的
type Student struct {name  stringage   int32  // 小写 私密 只能在自己的包里面用Class string // 大写 公开 类似C++  public
}func main() {// 1 值形式var stu1 Student // 里面的变量全是零 栈上的fmt.Println("stu1:", stu1)stu1.age = 34stu1.name = "darren"stu1.Class = "class1"fmt.Println(stu1.name) //darren// 2 new 函数创建var stu2 *Student = new(Student) // new出来的是堆上stu2.name = "alpha"stu2.age = 33fmt.Println(stu2.name, (*stu2).name)
/*********************************************************/// &形式创建  var stu3 *Student = &Student{name:  "rose",age:   18,Class: "class3", // 如果分行的时候每行都要,  逗号}// var stu3 *Student = &Student{name: "rose", age: 18, Class: "class3"}fmt.Println(stu3.name, (*stu3).name) //rose  rosefmt.Printf("addr: %p, %p, %p\n", &stu1, stu2, stu3)// 值 初始化var stu4 Student = Student{ // KV 形式初始化值name:  "lucy",age:   18,Class: "Go", // 注意这里的逗号不能少}fmt.Println("stu4:", stu4) // book2 := Book{"alpha",100,}fmt.Println(book2.Title,book2.Price)book2.Title = "spider"fmt.Println(book2.Title,book2.Price)book3 := &Book{"alpha1",1000,}fmt.Println(book3.Title,book3.Price)book3.Title = "spider"fmt.Println(book3.Title,book3.Price)fmt.Println(reflect.TypeOf(book2))fmt.Println(reflect.TypeOf(book3))
值的方式和返回指针的方式初始化/*********************************************************/// 值顺序初始化var stu5 Student = Student{ // 顺序形式 形式初始化值"1",18,"2004", // 注意这里的逗号不能少}fmt.Println("stu5:", stu5)// nil结构体var stu6 *Student = nilfmt.Println("stu6:", stu6)// 结构体大小fmt.Println("unsafe.Sizeof(stu5):", unsafe.Sizeof(stu5))fmt.Println("unsafe.Sizeof(stu6):", unsafe.Sizeof(stu6))// fmt.Println("unsafe.Sizeof(string):", unsafe.Sizeof(string))// fmt.Println("unsafe.Sizeof(int):", unsafe.Sizeof(int))
}

go - struct相关推荐

  1. c语言中struct和c++中class实例对比

    前言 实现游戏中简单的打怪升级的功能 c语言中的struct #include <stdio.h>typedef void(*Train)(struct player*, int); ty ...

  2. C++ 结构体struct 的使用

    结构体是什么 结构体是一种有开发者定义的数据类型,以容纳许多不同的数据值 结构体的注意事项: 声明结构体的方式和声明类的方式大致相同,其区别如下: 使用关键字 struct 而不是关键字 class. ...

  3. python 把int类型转bytes以及把bytes 转int 类型(使用方法to_bytes ,from_byte, struct)

    把int类型转bytes 方法1 使用方法to_bytes to_bytes 方法里面有3个参数 , 第一个数是指定要转换的bytes占多少个字节 第二个是byteorder 是指定大端或者是小端 的 ...

  4. struct.error: ushort format requires 0 <= number <= 0xffff

    这个问题是python struct 转bytes 的时候 下面的就会报错 import struct print(struct.pack("H",65536)) H 的取值范围是 ...

  5. python 使用 struct 把数据变成字节流

    1 struct 的作用: 可以将数据按照指定的格式转成字节流, 2 struct 里面的函数 2.1 struct.pack(format, v1, v2, ...): 返回一个包含值v1.v2. ...

  6. Go 学习笔记(20)— Go 操作 json 文件(编码生成 json、解码 json 为 map、解码 json 为 struct)

    1. Json 概述 Go 语言对于标准格式的编码和解码都有良好的支持,由标准库中的 encoding/json . encoding/xml . encoding/asn1 等包提供支持并且这类包都 ...

  7. struct stat结构体的详解和用法

    [cpp] view plaincopy //! 需要包含de头文件 #include <sys/types.h> #include <sys/stat.h> S_ISLNK( ...

  8. C语言中的struct结构体对齐问题

    C语言中的数据对齐问题 数据对齐:现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要 ...

  9. C++中结构体与类的区别(struct与class的区别)

    C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能. struct能包含成员函数吗? 能! struct能继承吗? 能!! s ...

  10. struct和union的大小问题

    union类型以其中size最大的为其大小 struct类型以其中所有size大小之和为其大小 #include<iostream> using namespace std; int ma ...

最新文章

  1. [导入]实时数据库的经典书
  2. 'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件
  3. App原生、混合、纯WEB开发模式的优劣分析
  4. ucla 计算机专业 本科申请,美国计算机专业申请
  5. 华为手机连电脑_华为手机微信聊天记录如何导出电脑的四大方法
  6. python扫雷的代码及原理_基于Python实现的扫雷游戏实例代码
  7. 绝地求生测试服画面优化软件,绝地求生大逃杀 画质优化补丁
  8. Matlab atan2
  9. [js] innerHTML有什么缺点?
  10. 应用程序无法正常启动(0xc000007b)错误的解决
  11. lumen 下使用自定义配置文件
  12. Android开发相关操作
  13. java table 内容居中_JTable内容居中显示 | 学步园
  14. wpf之代码设置背景图片
  15. Android Context简单说明
  16. 如何使用3klCon实现大规模自动化网络侦察
  17. java就业感言_JAVA就业班感言
  18. 语音对话声空计算机APP,空空语音app
  19. web网站开发基于高德地图浏览器定位
  20. 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xaf\x8c\xe7\x9)的解决方法

热门文章

  1. Eclipse中如何让Java类与Servlet产生关联【实现处理请求内容】
  2. MVC仓储执行存储过程报错“未提供该参数”
  3. 《一个操作系统的实现》 ubuntu系统环境配置
  4. 构建大型网站架构服务器集群(转)
  5. 网奇iwms插件之“我浏览过的文章”
  6. 缓存/内存型数据库 Redis
  7. Windows server 2019 - Raid1 搭建+测试
  8. 微服务化的基石--持续集成
  9. HDOJ--1598--find the most comfortable road(并查集+枚举)
  10. AI智能人脸识别很难?30行Python代码完美打造