Go语言基础结构体用法及示例详解
作者:枫少文 发布时间:2024-04-25 15:11:34
标签:Go语言,基础,结构体
概述
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合
语法
定义结构体【标识自定义结构体的名称,在同一个包内不能重复】
type 结构名 struct {
字段1: 字段1的值,
字段2: 字段2的值,
......
}
例子
//学生
type Student struct {
Name string //姓名
Age int //年龄
Sex bool //性别 true:男 false:女
}
结构体定义的三种形式
第一种【基本的实例化】
var stu Student
第二种【指针类型的结构体】
var stu *Student = new(Student)
第三种【取结构体的地址实例化,通过&的操作】
var stu *Student = &Student{}
初始化结构体
键值对初始化结构体
键值之间以:分隔;键值对之间以,分隔
变量名 := 结构体类型名{
字段1: 字段1的值,
字段2: 字段2的值,
......
}
例子
stu3 := Student{
Name: "李四",
Age: 18}
值列表填充结构体
没有字段,按着序列,必须全部填充
变量名 := 结构体类型名{
字段1的值,
字段2的值,
......
}
stu4 := Student{
"王五",
18,
true,
}
匿名结构体
定义结构体时同时赋值
变量名 := struct{
字段1: 字段类型1,
字段2: 字段类型2,
......
}{
// 字段值初始化
字段1: 字段1的值,
字段2: 字段2的值,
......
}
stu5 := struct {
Name string
Age int
}{
Name: "王五",
Age: 18,
}
访问结构体成员
赋值、访问都使用"."点这个符号
结构体.字段
var stu Student
stu.Name="张三" //赋值
stu.Age=18
stu.Sex=true
fmt.Println(stu.Age) //访问
结构体作为函数参数
func 函数名([结构体变量、结构体指针变量]){}
func printStudent(stu Student) {}
func printStudent(stu *Student) {}
结构体指针
使用结构体指针访问结构体成员,使用 “.” 操作符。
var 变量名 *结构名
var stu1 *Student = new(Student)
stu1.Name = "李四"
stu1.Age = 20
stu1.Sex = false
添加结构体方法
给结构体添加方法,在func和方法名之间加一个括号,加入该结构体的指针引用【也可以是值引用】
func ([结构体名]) 方法名([参数列表])[返回值列表]{}
例子
var stu Student
stu.Name = "张三"
stu.Age = 18
stu.Sex = false
//调用
stu.sayHi()
//添加结构体方法
func (stu Student) sayHi() {
fmt.Println(stu.Name, "Hi")
}
示例
package main
import "fmt"
//定义结构体【标识自定义结构体的名称,在同一个包内不能重复】
type Student struct {
Name string
Age int
Sex bool
}
func main() {
//struct定义的三种形式
var stu Student
stu.Name = "张三"
stu.Age = 18
stu.Sex = false
fmt.Println(stu)
var stu1 *Student = new(Student)
stu1.Name = "李四"
stu1.Age = 20
stu1.Sex = false
fmt.Println(stu1)
var stu2 *Student = &Student{}
stu2.Name = "王五"
stu2.Age = 55
stu2.Sex = true
fmt.Println(stu2)
//初始化结构体
stu3 := Student{
Name: "李四",
Age: 18}
fmt.Println(stu3)
stu4 := Student{
"王五",
18,
true,
}
fmt.Println(stu4)
//匿名结构体
stu5 := struct {
Name string
Age int
}{
Name: "王五",
Age: 18,
}
fmt.Println(stu5)
// printStudent(stu)
printStudent(stu1)
stu.sayHi()
}
//添加结构体方法
func (stu Student) sayHi() {
fmt.Println(stu.Name, "Hi")
}
// func printStudent(stu Student) {
// fmt.Println(stu.Name, stu.Age, stu.Sex)
// }
func printStudent(stu *Student) {
fmt.Println(stu.Name, stu.Age, stu.Sex)
}
来源:https://blog.csdn.net/guofeng93/article/details/91355289
0
投稿
猜你喜欢
- 本文实例讲述了Python实现快速排序的方法。分享给大家供大家参考,具体如下:说起快排的Python实现,首先谈一下,快速排序的思路:1、取
- 这篇文章主要介绍了如何使用python实现模拟鼠标点击,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 利用Python + wxpy 可以快速的查询自己好友的地区分布情况,以及好友的性别分布数量。还可以批量下载好友的头像,拼接成大图。本次教程
- 今天想围绕“产品交互设计”说说一些我们的想法,一说到产品设计,我想在坐的各位脑海里肯定联想到了很多表单设计、导航设计、界面布局等等,但是今天
- 有时候,我们需要将TensorFlow的模型导出为单个文件(同时包含模型架构定义与权重),方便在其他地方使用(如在c++中部署网络)。利用t
- 一、正则表达式的作用提示:正则表达式是一段特殊的字符串,它表示的是一段有规律的信息。如果我们想从一段文字中提取想要的内容,就可以通过正则表达
- 一、zipfile模块的简述zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频
- 一.基本数据类型整数:int字符串:str(注:\t等于一个tab键)布尔值: bool列表:list 列表用[]元祖:tuple元祖用()
- 本文实例讲述了Python Socket实现简单TCP Server/client功能。分享给大家供大家参考,具体如下:网络上关于socke
- 在HTML中,我们设置border=”1″ 时,表格边框实际大小是2px,那如果我们要做成1px的细线表格要怎么办?以前在做1px的表格的时
- 前言pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行非tes
- 有一个群友在群里问个如何快速搭建一个搜索引擎,在搜索之后我看到了这个代码所在Git:https://github.com/asciimoo/
- 前言需求背景来源于AI算法通信接口编写…采用python flask框架 解决flask不是生产环境问题一、flask
- 场景产品中有一张图片表pics,数据量将近100万条,有一条相关的查询语句,由于执行频次较高,想针对此语句进行优化表结构很简单,主要字段:u
- 前言本文主要介绍通过Python提取csv文件中数据,并对数据进行处理。编译器:Anaconda3 语言:Python3一、使用pandas
- 疫情数据程序源码// An highlighted blockimport requestsimport jsonclass epidemi
- PHP implode() 函数实例把数组元素组合为一个字符串:<?php $arr = array('Hello',
- 目录 一个简单的实现使用BSF(宽度优先搜索)进行实现使用DFA(Deterministic Finite Automaton)进
- 今天遇到一个问题,在通过php的mssql函数读取sql server数据导入mysql数据库时,sql server 的datetime类
- 1 读/写文件NumPy文件读写主要有二进制的文件读写和文件列表形式的数据读写两种形式1、二进制的文件读写save函数是以二进制的格式保存数