iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Go语言中结构体的作用是什么
  • 867
分享到

Go语言中结构体的作用是什么

2023-06-15 22:06:34 867人浏览 泡泡鱼
摘要

这篇文章给大家介绍Go语言中结构体的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。自定义类型type 自定义类型名 类型名 例: type NewInt&nb

这篇文章给大家介绍Go语言中结构体的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

自定义类型

type 自定义类型名 类型名 例: type NewInt int

完整代码

package main  import "fmt"  type NewInt int  func main() {     var n1 NewInt = 1     fmt.Println(n1)//结果为1 }

如果要是理解的话,可以理解为NewInt包含了int的功能。

这里可以把NewInt当作int来使用。

注:NewInt是一个新的类型,它包含int,并不等于int。

类型别名

代码

type 类型别名 = 类型名 例: type Nint = int

完整代码

package main  import "fmt"  type Nint = int  func main() {     var n1 Nint = 1     fmt.Println(n1)//1 }

自定义类型和类型别名区别

可能猛一看,感觉自定义类型和类型别名似乎一样,但是其实是不太一样的。

代码

package main  import "fmt"  type Nint1 int   //自定义类型 type Nint2 = int //类型别名  func main() {     var n1 Nint1 = 1     var n2 Nint2 = 1     fmt.Printf("n1类型:%T,n2类型:%T", n1, n2) }

执行结果。

Go语言中结构体的作用是什么

结论:自定义类型真的是自定义类型,类型都变了,类型别名只是类型名变了,但是本质没变。

结构体

Go语言的结构体,相当Java,python等语言中的类,已经不再是简简单单的结构体那么简单了。

结构体属于基本数据类型。

内存图大概如下。

Go语言中结构体的作用是什么

结构体定义

定义结构体需要用到关键字type和struct。

语法

type 结构体名 struct {     字段1 字段类型1     字段2 字段类型2     ... }

示例,通过结构体描述一个学生。

type Student struct {     Name   string     Age    int     Height int     Weight int     phone string }

注:如果字段类型是相同的,可以写在同一行。

type Student struct {   Name                string   Age, Height, Weight int   phone               string }

结构体初始化

方式一,赋值时初始化

func main() {   var s1 = Student{     Name:   "张三",     Age:    18,     Height: 180,     Weight: 120,     phone:  "6666666",   }   fmt.Println(s1) }

方式二,先声明,后赋值

func main() {   var s1 Student   s1.Name = "张三"   s1.Age = 18   s1.Height = 180   s1.Weight = 120   s1.phone = "66666" }

两个执行结果。

Go语言中结构体的作用是什么

匿名结构体

有时候我们的函数可能会要求传入一个结构体,但是你又不想定义,就想临时用一下,赶紧传参得了。

这时候可以考虑匿名结构体。

方式一,先声明,后赋值

func main() {   var car struct {     Name   string;     CarNum string   }   car.Name = "QQ"   car.CarNum = "京6666"   fmt.Println(car) //{QQ 京6666} }

方式二,声明+初始化

func main() {   var car = struct {     Name   string;     CarNum string   }{     Name:   "QQ",     CarNum: "京6666",   }    fmt.Println(car) //{QQ 京6666} }

两个执行结果。

通过&方式初始化结构体

通过&的方式初始化,性能会提高一点,因为返回的是第一个的指针。

但是操作过程跟上述一样,Go已经封装好了。

代码

func main() {   //方式一,等于一个空&结构体在赋值   var s1 = &Student{}   s1.Name = "张三"   //...   //方式二,直接赋值   var s2 = &Student{     Name:   "",     Age:    0,     Height: 0,     Weight: 0,     phone:  "",   }   //方式三不可以   //var s3 &Student//error }

使用&的方式基本跟原来一样,但是方式三不行。

&初始化结构体函数注意事项

如果使用&的方式,那函数参数也要变一下的。

package main  import "fmt"  type Student struct {   Name                string   Age, Height, Weight int   phone               string }  func sayStudent1(s Student) {   fmt.Println(s) } func sayStudent2(s *Student) {   //如果穿的是结构体地址,那么接收就需要用*   fmt.Println(s) } func main() {   var s1 = Student{     Name:   "111",     Age:    0,     Height: 0,     Weight: 0,     phone:  "1111",   }   var s2 = &Student{     Name:   "2222",     Age:    0,     Height: 0,     Weight: 0,     phone:  "2222",   }   sayStudent1(s1)   sayStudent2(s2) }

执行结果。

Go语言中结构体的作用是什么

关于结构体默认值

代码

func main() {   var s1 = Student{}   fmt.Println(s1) }

执行结果。

Go语言中结构体的作用是什么

在操作结构体时,即使没有赋值,也会有默认值,所以不用担心会报错。

int默认值是0,string默认值是"",等。

关于Go语言中结构体的作用是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Go语言中结构体的作用是什么

本文链接: https://www.lsjlt.com/news/281802.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • c语言怎么保证除完还是小数
    在 c 语言中,整数除法只能得到整数结果,要得到小数结果,需将操作数显式转换为浮点数:将一个操作数转换为浮点数,如 float result = num1 / (float)num2;将...
    99+
    2024-05-14
    c语言
  • c语言怎么让结尾不输出空行字符
    要阻止 c 语言程序结尾输出空行字符,可以使用以下方法:将 main 函数的返回值类型改为 void;在 main 函数中显式返回 0;调用 fflush(stdout) 函数刷新标准输...
    99+
    2024-05-14
    c语言
  • c语言怎么让结尾不输出空行数据
    在 c 语言中,可通过以下方法抑制 printf() 函数在程序结束时打印末尾空行:调用 fflush() 函数刷新缓冲区,立即输出所有数据;使用 setvbuf() 函数关闭缓冲,使数...
    99+
    2024-05-14
    c语言
  • c语言怎么让结尾无空行
    在 c 中去除结尾空行的方法:使用 fflush() 刷新缓冲区。使用 setvbuf() 将缓冲模式设置为 _ionbf。使用 printf 宏,它默认禁用缓冲。 如何在 C 语言中...
    99+
    2024-05-14
    c语言
  • c语言怎么输入实数赋值
    c语言中使用scanf()函数输入实数并赋值给变量:格式:scanf("%lf", &variable);%lf是格式说明符,指定输入双精度浮点数;&...
    99+
    2024-05-14
    c语言
  • c语言怎么表达负数
    c语言中,负数以减号 (-) 表示,放在数字或变量前。负数运算规则包括:绝对值取正数;加正数或负数,结果取决于绝对值大小;乘或除以正数或负数,结果由符号奇偶性决定。负数的平方始终为正数,...
    99+
    2024-05-14
    c语言
  • c语言怎么输入Jac数列
    jacobi 数列的输入和生成方法分别有:1. 直接输入法:使用 scanf() 函数逐项输入数列。2. 递归生成法:使用递归公式生成数列,需初始化数列的前两项,然后按公式生成后续项。 ...
    99+
    2024-05-14
    c语言
  • c语言怎么把数组变成字符串
    在 c 语言中,将数组转换成字符串的方法包括:使用 sprintf() 将数组格式化为字符串。使用 strcpy() 将数组复制到字符串。使用 strncpy() 将指定长度的数组复制到...
    99+
    2024-05-14
    c语言
  • c语言怎么批量注释
    批量注释 c 语言代码的方法有:使用代码编辑器:使用快捷键或菜单命令自动添加 // 注释符号。使用注释工具:如 doxygen 和 cutter,批量添加行注释、块注释和文档注释。使用脚...
    99+
    2024-05-14
    python sublime c语言
  • c语言怎么把选中的全部注释
    c语言中注释选中内容可通过以下步骤实现:选中要注释的代码。根据使用的编辑器或ide,执行注释操作,例如在visual studio中右键单击并选择“注释所选内容”。添加注释内容。保存更改...
    99+
    2024-05-14
    sublime c语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作