6.golang函数、指针、结构体

函数

函数是执行特定任务的代码块。函数接受输入,对输入执行一些计算,然后生成输出。

函数声明

在 go 中声明函数的语法是:

func name(parameter) (result-list){//body
}

函数声明以func关键字开头,后跟name(函数名)。在括号中指定参数,后面为函数返回值result-list。参数和返回类型在函数中是可选的。因此,以下语法也是有效的函数声明。

func name() {  //body
}

单返回值函数

func plus(a, b int) (res int) {c := a + breturn c
}func main() {a, b := 90, 6sumAll := plus(a, b)fmt.Println("sum", sumAll)
}

上面程序,函数plus 接受两个 int 类型的值,并返回最终和。输出结果如下:sum 96

多返回值函数

func plus(a, b int) (int, int) {c := a + bd := a - breturn c, d
}func main() {a, b := 90, 6sumAll, subAll := plus(a, b)fmt.Println("sum", sumAll)fmt.Println("sub", subAll)
}

输出结果如下:

sum 96
sub 84

命名返回值

如果返回值被命名,相当由于在函数的第一行被声明为变量。

func plus(a, b int) (res int) {res = a + breturn
}func main() {a, b := 90, 6sumAll := plus(a, b)fmt.Println("sum", sumAll)
}

输出结果如下:sum 96

参数可变函数

func sum(nums ...int) (res int) {fmt.Println("len of nums is : ", len(nums))res = 0for _, v := range nums {res += v}return
}func main() {fmt.Println(sum(1))fmt.Println(sum(1, 2))fmt.Println(sum(1, 2, 3))
}

输出结果如下:

len of nums is :  1
1
len of nums is :  2
3
len of nums is :  3
6

匿名函数

func main() {func(name string) {fmt.Println(name)}("初辰ge")
}

指针

指针是存储另一个变量的内存地址的变量。

指针的声明

func main() {a := 255b := &afmt.Println(b)fmt.Println(*b)
}

& 操作符获取一个变量的指针地址。* 操作符获取指针地址的值。程序的输出为:

0xc00000a0d8
255

结构体

结构体是由零个或多个任意类型的值聚合成的实体,它可以用于将数据分组为一个单元而不是将它们中的每一个作为单独的值。

声明结构体

用关键字 type 和 struct 用来定义结构体,语法如下:

type StructName struct{FieldName type
}

声明结构体并赋值

type Student struct {age  intname string
}func main() {stu := Student{age:  18,name: "初辰ge",}fmt.Println(stu)
}

上述代码输出如下:

{18 初辰ge}

获取结构的各个字段

.运算符用于访问结构的各个字段。

type Student struct {age  intname string
}func main() {stu := Student{age:  18,name: "初辰ge",}fmt.Println(stu.name)
}

上述代码输出如下:

初辰ge

嵌套结构体

一个结构可能包含一个字段,而该字段又是一个结构。这些类型的结构称为嵌套结构。

type Student struct {age  intname stringdog  Dog
}
type Dog struct {age  intname string
}func main() {stu := Student{age:  18,name: "初辰ge",dog: Dog{age:  2,name: "小白",},}fmt.Println(stu.dog.name)
}

上述代码输出如下:

小白

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/187691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何判别使用的junit是4还是5

Junit4与Junit5的版本中,Test注解的包位置不同。 Junit4的Test注解是在org.junit包下,儿Junit5的Test注解是在org.junit.jupiter.api包下。 可据此判定是使用的Junit4还是Junit5。 Junit4 import org.junit.Test;Junit5 import org.junit.jupiter.api…

简单实用:isPalindrome方法在密码验证中的应用

在信息安全领域中,密码验证是非常重要的一部分。一个好的密码应该有足够的复杂度,以防止被破解。而回文密码由于正读和反读都一样这样特殊的性质,具有很高的安全性,可以发挥很大的作用。在实际的密码策略中,我们可能会…

2023认证杯B题:金属表面缺陷检测|数学中国数学建模国际赛(小美赛) |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时,你是否曾经感到茫然无措?作为2022年美国大学生数学建模比赛的O奖得主,我为大家提供了一套优秀的解题思路,让你轻松应对各种难题。 让我们来看看认证杯的B题! 完整内容可以在文章末…

你对SPA单页面的理解,它的优缺点分别是什么?

面试官:你对SPA单页面的理解,它的优缺点分别是什么?如何实现SPA应用呢 一、什么是SPA SPA(single-page application),翻译过来就是单页应用SPA是一种网络应用程序或网站的模型,它通过动态重写当…

Whisper

文章目录 使后感Paper Review个人觉得有趣的Log Mel spectrogram & STFT Trainingcross-attention输入cross-attention输出positional encoding数据 Decoding为什么可以有时间戳的信息 Test code 使后感 因为运用里需要考虑到时效和准确性,类似于YOLO&#xff…

vue3使用动态component

使用场景: 多个组件通过component标签挂载在同一个组件中,通过触发时间进行动态切换。vue3与vue2用法不一样,这里有坑! 使用方法: 1.通过vue的defineAsyncComponent实现挂载组件 2.component中的is属性 父组件&am…

git小白初学习

#1. 安装 http://npm.taobao.org/mirrors/git-for-windows/ #2. 设置自己的用户信息,方便各个节点知道这个客户端是谁 #全局设置 git config --global user.name ‘xyg’ git config --global user.email ‘1584066465qq.com’ #对单个仓库设置 cd 到对应仓库下 g…

GaussDB如何进行性能调优

GaussDB如何进行性能调优 GaussDB性能调优过程需要综合考虑多方面因素,因此,调优人员应对系统软件架构、软硬件配置、数据库配置参数、并发控制、查询处理和数据库应用有广泛而深刻的理解。 调优流程 调优各阶段说明,如下表所示。 数据库性…

深入探究Photoshop图像修复与润饰技巧

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 在Photoshop中,图像修复和润饰是强…

Vim Coc插件实现代码跳转

Vim Coc插件实现代码跳转 按照coc主页的配置 里面是有提供代码跳转的功能的 具体配置如下 " GoTo code navigation nmap <silent> gd <Plug>(coc-definition) nmap <silent> gy <Plug>(coc-type-definition) nmap <silent> gi <Plug…

CNN对 MNIST 数据库中的图像进行分类

加载 MNIST 数据库 MNIST 是机器学习领域最著名的数据集之一。 它有 70,000 张手写数字图像 - 下载非常简单 - 图像尺寸为 28x28 - 灰度图 from keras.datasets import mnist# 使用 Keras 导入MNIST 数据库 (X_train, y_train), (X_test, y_test) mnist.load_data()print(&…

安卓搜索框,EditText,SearchView

创建安卓搜索框一般有两种方法&#xff0c;使用EditText控件或使用SearchView控件&#xff1b;因为SearchView自由度和效果感觉没有EditText好&#xff0c;建议使用EditText控件&#xff1b;SearchView建议与ToolBar和menu配合使用。 1. EditText EditText制作搜索框只需要使…

代码随想录算法训练营第三十六天| 435 无重叠区间 763 划分字母区间 56 合并区间

目录 435 无重叠区间 763 划分字母区间 56 合并区间 435 无重叠区间 将intervals数组按照左端点进行升序排序。 设置变量len标志此时新加入端点后所有区间的位置&#xff0c;将其赋初值为第一对区间的右端点&#xff0c;因为该点是一定可达的。设置变量res来存储需要移除空间…

java对xml压缩

import java.util.*; import java.util.zip.GZIPOutputStream; import java.nio.charset.StandardCharsets; import org.apache.commons.codec.binary.Base64;/*** 模板压缩** param xml 模板xml* return* throws Exception*/public static String businessData(String xml) th…

上海亚商投顾:沪指震荡反弹 消费、医药股走势活跃

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一&#xff0e;市场情绪 指数今日窄幅震荡&#xff0c;黄白二线分化明显&#xff0c;权重股力挺指数&#xff0c;题材小票走…

INA219电流感应芯片_程序代码

详细跳转借鉴链接INA219例程此处进行总结 简单介绍一下 INA219&#xff1a; 1、 输入脚电压可以从 0V~26V,INA219 采用 3.3V/5V 供电. 2、 能够检测电流&#xff0c;电压和功率&#xff0c;INA219 内置基准器和乘法器使之能够直接以 A 为单位 读出电流值。 3、 16 位可编程地…

《数字图像处理-OpenCV/Python》连载(50)非线性灰度变换

《数字图像处理-OpenCV/Python》连载&#xff08;50&#xff09;非线性灰度变换 本书京东优惠购书链接&#xff1a;https://item.jd.com/14098452.html 本书CSDN独家连载专栏&#xff1a;https://blog.csdn.net/youcans/category_12418787.html 第 7 章 图像的灰度变换 灰度变…

C# AES-128-CBC 加密

一、加密 /// <summary>/// 加密/// </summary>public static string AesEncrypt(string toEncrypt){byte[] toEncryptArray UTF8Encoding.UTF8.GetBytes(toEncrypt);byte[] keyArray UTF8Encoding.UTF8.GetBytes(Key);//注意编码格式(utf8编码 UTF8Encoding)byt…

Unity | 渡鸦避难所-0 | 创建 URP 项目并导入商店资源

0 前言 知识点零零碎碎&#xff0c;没有目标&#xff0c;所以&#xff0c;一起做游戏吧 各位老师如果有什么指点、批评、漫骂、想法、建议、疑惑等&#xff0c;欢迎留言&#xff0c;一起学习 1 创建 3D&#xff08;URP&#xff09;项目 在 Unity Hub 中点击新项目&#xff…

【ESP32】手势识别实现笔记:红外温度阵列 | 双三次插值 | 神经网络 | TensorFlow | ESP-DL

目录 一、开发环境搭建与新建工程模板1.1、开发环境搭建与卸载1.2、新建工程目录1.3、自定义组件 二、驱动移植与应用开发2.1、I2C驱动移植与AMG8833应用开发2.2、SPI驱动移植与LCD应用开发2.3、绘制温度云图2.4、启用PSRAM&#xff08;可选&#xff09;2.5、画面动静和距离检测…