【GO语言卵细胞级别教程】04.GO函数介绍

【GO语言卵细胞级别教程】04.GO函数介绍

目录:

  • 【GO语言卵细胞级别教程】04.GO函数介绍
  • 0.创建项目
  • 1.函数的引入
  • 2.注意事项
  • 3.详细介绍
    • 3.1 形参介绍

0.创建项目

  1. 创建目录
    在这里插入图片描述

  2. 执行命令加载模块
    cd 02.gostudy目录下
    在这里插入图片描述

1.进入目录下
cd 02.gostudy
2.初始化模块变量
go mod init com.gdzs
3.go mod tidy4.main.gopackage main
import ("fmt""com.gdzs/goproject/src/com/nsfocus/mystudy"
)
func main(){fmt.Println("main")mystudy.DemoFunc()
}5. 01.函数.go文件内容package mystudy
// 函数模块
import "fmt"
func add(num1 int , num2 int) (int){return num1 + num2
}
func DemoFunc(){fmt.Println("求和函数")sum := add(10, 21)fmt.Println("求和结果:", sum)
}6.执行go run main.go即可 main.go必须要指定相对路径,比如本项目的
D:\07.go\02.gostudy> go run .\goproject\src\com\nsfocus\main\main.go
main
求和函数
求和结果: 31

注意
go mod tidy 的作用如下:

  1. 移除不再使用的依赖:它会检查项目的源代码和导入语句,并删除 go.mod 文件中未使用的依赖模块。这样可以清理项目中不再需要的依赖,减少项目的大小。
  2. 添加缺失的依赖:go mod tidy 会检查项目的源代码,并根据导入语句自动添加缺失的依赖模块到 go.mod 文件中。这样可以确保项目的依赖完整,避免编译错误或运行时错误。
  3. 更新依赖模块:它会根据 go.mod 文件中指定的版本要求,检查并更新依赖模块到可用的最新版本。这样可以确保项目使用的依赖模块是最新的,包含了最新的功能和修复

1.函数的引入

#Go函数

  1. 简介
    函数的定义:就是用于封装重复的内容,做成一个方法,可以输入给你一些输出
    作用:提高代码复用性和可读性
func 函数名 (形参列表)(返回值类型列表){执行语句return + 返回值列表
}
  1. 举例
    #Go函数定义
func add(num1 int, num2 int)(int){var sum int =0sum = num1 + num2return sum
}

2.注意事项

#Go函数注意事项

  1. 函数与函数并列的关系,所以我们定义的函数不能写到main函数中,如下的写法是错误的
    在这里插入图片描述

  2. 函数名的规范

    1. 和标识符的规范一样:驼峰命名,简单明了
    2. 首字母不能是数字
    3. 首字母大写该函数可以被本包文件以及其他包文件使用类似(java public)
    4. 首字母小写只能被本包文件使用,其他包文件不能使用类似(java private)

3.详细介绍

3.1 形参介绍

  1. 形参可以是0个、1个、多个
    形参作用:接收外来的数据
  2. 返回类型有一个
package mystudy
// 函数模块
import "fmt"// 返回值类型有一个,写返回类型
func add(num1 int , num2 int) (int){return num1 + num2
}
// 返回值可以不写返回类型,如果只有一个返回类型的话可以不写括号(()
func add2(num1 int, num2 int) int {var sum int = 0sum = num1 + num2return sum
}
func DemoFunc(){// fmt.Println("求和函数")// sum := add(10, 21)// fmt.Println("求和结果:", sum)sum2 := add2(19,22)fmt.Println("求和结果:", sum2)
}
  1. 返回类型有多个
package mystudy
// 函数模块
import "fmt"func add3(num1 int, num2 int)(int, int){// 值交换return num2, num1
}func DemoFunc(){// fmt.Println("求和函数")// sum := add(10, 21)// fmt.Println("求和结果:", sum)sum2 := add2(19,22)fmt.Println("求和结果:", sum2)var num1 int = 10var num2 int = 20fmt.Printf("替换前:sum1:%d, sum2:%d\n", num1, num2)num2, num1 = add3(num2, num1)fmt.Printf("替换后:sum1:%d, sum2:%d", num1, num2)
}
  1. 想要改变形参的值,需要使用指针。这里传入的是指针,所以可以直接修改得到值
// 传入指针才可以修改对应变量值
func address(num1 *int){fmt.Println(num1)*num1 = 100
}
  1. 返回类型不用按照顺序返回,可以使用 (xxx1 int , xxx2 int)
// 不用指定返回值的类型
func addsub(num1 int, num2 int)(sum int, sub int){sum = num1 + num2sub = num1 - num2// 这里不需要指定返回变量,自动生成return sum ,sub 所以直接写个return即可return 
}
  1. 可以传入多个参数:xxx…int
// 传入多个参数
func mostParams(nums...int){for i :=0 ; i< len(nums); i++ {fmt.Println("num=",nums[i])}
}
mostParams(12,2,3,233,23,32,32)
  1. Golang中函数不支持重载:函数名相同,形参列表不同
  2. 函数也是一种数据类型,可以赋值给一个变量,则该变量就是一个函数类型的变量了,通过该变量可以对函数调用。
func mostParams(nums...int){for i :=0 ; i< len(nums); i++ {fmt.Println("num=",nums[i])}
}
separator := strings.Repeat("-", 10)
varMostParams := mostParams
fmt.Println(separator)
varMostParams(32,23,88)
  1. 函数当作一个参数进行传递
func mostParams(nums...int){for i :=0 ; i< len(nums); i++ {fmt.Println("num=",nums[i])}
}
// 函数当作一个参数传递
func funcParams(funcTest func(...int)){funcTest(12,12,12)
}
varMostParams := mostParams
func DemoFunc(){funcParams(varMostParams)
}
  1. 自定义数据类型
    这里可以理解为别名也可以,但是类型不是func(int)而是myFunc
    在这里插入图片描述
type myint int
var num myint = 10
注意这里的myint和int不是同一个类型,这num的类型是 myint类型
----------------------------------------------------
一般用来
type myFunc func(int)func test(testFunc myFunc){}

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

多线程JUC:线程池原理、自定义线程池详细解析

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;多线程&JUC&#xff1a;等待唤醒机制&#xff08;生产者消费者模式&#xff09; &#x1f4da;订阅专栏&#xff1a;多线程&…

「优选算法刷题」:数青蛙

一、题目 给你一个字符串 croakOfFrogs&#xff0c;它表示不同青蛙发出的蛙鸣声&#xff08;字符串 "croak" &#xff09;的组合。由于同一时间可以有多只青蛙呱呱作响&#xff0c;所以 croakOfFrogs 中会混合多个 “croak” 。 请你返回模拟字符串中所有蛙鸣所需不…

Minecraft的红石教程之隐形门一号

一.前言 昨天写的&#xff0c;哦不&#xff0c;今天凌晨写的CSDN太烧脑了&#xff0c;今天玩会儿MinecraftA-A 二.一号隐形门 1.准备的材料&#xff1a; 粘性活塞&#xff0c;木板&#xff0c;红石&#xff0c;压力板&#xff0c;红石火把 2.挖洞 中间挖2*3*2的洞&#xf…

第三百一十七回

文章目录 1. 概念介绍2. 实现方法2.1 hintText2.2 labelText2.3 controller 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何在输入框中处理光标"相关的内容&#xff0c;本章回中将介绍如何添加输入框默认值.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1.…

基于springboot广场舞团管理系统源码和论文

随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&#xf…

Java项目:19 基于SpringBoot的医院管理系统

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 医院管理系统 分为三个角色 管理员、医生、病人 管理员的主要功能&#xff1a;系统管理、医生管理、患者管理、预约管理、病史管理、住院信息管理、管…

【OrangePi Zero2 智能家居】阿里云人脸识别方案

一、接入阿里云 二、C语言调用阿里云人脸识别接口 三、System V消息队列和POSIX 消息队列 一、接入阿里云 在之前树莓派的人脸识别方案采用了翔云平台的方案去1V1上传比对两张人脸比对&#xff0c;这种方案是可行&#xff0c;可 以继续采用。但为了接触更多了云平台方案&…

Flink基础篇|001_Flink是什么

&#x1f4eb; 作者简介&#xff1a;「六月暴雪飞梨花」&#xff0c;专注于研究Java&#xff0c;就职于科技型公司后端工程师 &#x1f3c6; 近期荣誉&#xff1a;华为云云享专家、阿里云专家博主、腾讯云优秀创作者 &#x1f525; 三连支持&#xff1a;欢迎 ❤️关注、&#x…

网络报文处理流程

报文处理流程 WLAN网络中的数据包括管理报文和业务数据报文。管理报文必须采用CAPWAP隧道进行转发&#xff0c;而业务数据报文除了可以采用CAPWAP隧道转发之外&#xff0c;还可以采用直接转发方式和Soft-GRE转发方式。 管理报文用来传送AC与AP之间的管理数据&#xff0c;存在于…

再识C语言 DAY16【进制的转换 】

文章目录 前言进制的转换一、各个进制的组成二、二进制转换其他进制三。其他进制转换为二进制四.小数部分进制转换五.八进制与十进制的相互转换 总如果您发现文章有错误请与我留言&#xff0c;感谢 前言 本文章总结于此视频 进制的转换 一、各个进制的组成 1. 二进制&#x…

【EAI 014】Gato: A Generalist Agent

论文标题&#xff1a;A Generalist Agent 论文作者&#xff1a;Scott Reed, Konrad Zolna, Emilio Parisotto, Sergio Gomez Colmenarejo, Alexander Novikov, Gabriel Barth-Maron, Mai Gimenez, Yury Sulsky, Jackie Kay, Jost Tobias Springenberg, Tom Eccles, Jake Bruce,…

【JAVA WEB】 css背景属性 圆角矩形的绘制

目录 背景属性设置 圆角矩形 背景属性设置 背景颜色,在style中 background-color:颜色&#xff1b; 背景图片 background-image:url(……) 背景图片的平铺方式 background-repeat: 平铺方式 repeat 平铺&#xff08;默认&#xff09;no-repeat 不平铺repeat-x 水平平铺repea…

例37:爱好选择

建立一个新的EXE工程&#xff0c;放两个单选&#xff0c;两个复选框如图33。 图33 输入代码&#xff1a; Sub Form1_Check1_BN_Clicked(hWndForm As hWnd, hWndControl As hWnd)Text1.Text ""If Check1.Value ThenText1.Text"你喜欢" & Check1.Cap…

【并发编程】锁-源码分析

1、ReentrantLock 1.1 加锁流程源码 1.1.1 加锁流程概述 1.1.2 lock源码分析 1.1.2.1 公平和非公平锁方式 // 非公平锁 final void lock() {// 上来就先基于CAS的方式,尝试将state从0改为1if (compareAndSetState(0, 1))// 获取锁资源成功,会将当前线程设置到exclusiveOwn…

【Go】一、Go语言基本语法与常用方法容器

GO基础 Go语言是由Google于2006年开源的静态语言 1972&#xff1a;&#xff08;C语言&#xff09; — 1983&#xff08;C&#xff09;—1991&#xff08;python&#xff09;—1995&#xff08;java、PHP、js&#xff09;—2005&#xff08;amd双核技术 web端新技术飞速发展&…

LLaMA 入门指南

LLaMA 入门指南 LLaMA 入门指南LLaMA的简介LLaMA模型的主要结构Transformer架构多层自注意力层前馈神经网络Layer Normalization和残差连接 LLaMA模型的变体Base版本Large版本Extra-Large版本 LLaMA模型的特点大规模数据训练 LLaMA模型常用数据集介绍公共数据来源已知的数据集案…

yolov8自制数据训练集

目录 1.YOLOv8是啥 2.系统环境 3.安装labelimg 3.1安装 3.2启动 labelimg 4.自制分类图片 4.1 YOLO数据集要求 4.2 图片保存目录 4.3 利用labelimg进行标注 4.4 存储图片 4.5 标注文件 5.数据集训练 5.1yaml文件 5.2训练命令 5.3查看训练过程 5.3.1启动tensorb…

拟合案例2:matlab实现分段函数拟合(分段点未知)及源码

案例介绍: 本案是针对一个分段函数中的参数进行拟合,使用的拟合工具是matlab中的lsqcurvefit或nlinfit。函数形式和待拟合参数如下所示。该案例的特殊之处在于分段点也是待拟合参数,因此如何自定义拟合函数,实现分段点的拟合是本案例最大的难点。本案例提供了三种分段函数…

Git基础命令,分支,标签的使用【快速入门Git】

Git基础命令&#xff0c;分支&#xff0c;标签的使用【快速入门Git】 Git基础常用命令Git工作流程工作区&#xff0c;暂存区和版本库文件状态获取Git仓库 git init | git clone查看文件状态 git status暂存已修改的文件 git add 查看已暂存和未暂存的修改 git diff提交文件更改…