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

news2024/11/18 12:47:43

【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 tidy

4.main.go

package 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 =0
	sum = num1 + num2
	return 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 = 0
	sum = num1 + num2
	return 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 = 10
	var num2 int = 20
	fmt.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 + num2
	sub = 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://www.coloradmin.cn/o/1443220.html

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

相关文章

django admin 自定义界面时丢失左侧导航 nav_sidebar

只显示了自定义模板的内容&#xff0c;左侧导航没有显示出来。 原因&#xff1a;context 漏掉了&#xff0c;要补上。 # 错误写法&#xff08;左侧导航不显示&#xff09;def changelist_view(self, request, extra_contextNone):form CsvImportForm()payload {"form&qu…

【linux温故】CFS调度

写在前面 网上关于CFS 调度器的文章多如牛毛&#xff0c;没必要自己写。很多文章写的都非常好。 很多文章里&#xff0c;关键的技术点&#xff0c;都是一样的&#xff0c;只是各个文章说法不一样。 掌握了核心的&#xff0c;关键的&#xff0c;其他的&#xff0c;如果工作中…

【Spring框架】Spring事务的原理

目录 〇、对类或方法的Spring事务属性进行解析 0.1 解析标签 0.2 注册 InfrastructureAdvisorAutoProxyCreator 0.3 判断目标方法是否适合 canApply 0.4 匹配标签 match 0.5 小结 一、Spring事务的实现 1.1 准备事务 1.1.1 收集Transactional注解属性信息&#xff0c;…

【第六天】c++虚函数多态

一、多态的概述 多态按字面的意思就是多种形态。当类之间存在层次结构&#xff0c;并且类之间是通过继承关联&#xff08;父类与子类&#xff09;时&#xff0c;就会用到多态。 C 多态意味着调用成员函数时&#xff0c;会根据调用函数的对象的类型来执行不同的函数。 静态多态&…

改变终端安全的革命性新兴技术:自动移动目标防御技术AMTD

自动移动目标防御技术通过启用终端配置的自适应防御来改变终端检测和响应能力。产品领导者可以实施AMTD来确保实时威胁响应&#xff0c;并减少检测和响应安全威胁所需的时间。 主要发现 通过动态修改系统配置、软件堆栈或网络特征&#xff0c;自动移动目标防御&#xff08;AMTD…

[word] word斜线表头怎么做? #微信#媒体#职场发展

word斜线表头怎么做&#xff1f; 在制作Word表格的时候&#xff0c;经常会用到两栏三栏的表头&#xff0c;这样两栏、三栏的斜线表头你都是怎么样制作的呢&#xff1f;今天给大家分享在Word中制作两栏、三栏斜线表头的多种制作方法。 1、边框法 选中第一个单元格&#xff0c…

基于JSP的网上购书系统

点击以下链接获取源码&#xff1a; https://download.csdn.net/download/qq_64505944/88825694?spm1001.2014.3001.5503 Java项目-15 源码论文数据库配置文件 基于JSP的网上购书系统 摘要 在当今的社会中&#xff0c; 随着社会经济的快速发展以及计算机网络技术和通讯技术…

第8章 多线程

8.1 线程概述 人们在日常生活中&#xff0c;很多事情都是可以同时进行的。例如&#xff0c;一个人可以一边听音乐&#xff0c;一边打扫房间&#xff0c;可以一边吃饭&#xff0c;一边看电视。在使用计算机时&#xff0c;很多任务也是可以同时进行的。例如&#xff0c;可以一边…

LabVIEW伺服阀性能参数测试

LabVIEW伺服阀性能参数测试 伺服阀作为电液伺服系统中的核心元件&#xff0c;其性能参数的准确测试对保证系统整体性能至关重要。开发了一种基于LabVIEW软件开发的伺服阀性能参数测试系统&#xff0c;提高测试的自动化程度和精确性&#xff0c;同时降低操作复杂度和成本。 传…

分享86个表单按钮JS特效,总有一款适合您

分享86个表单按钮JS特效&#xff0c;总有一款适合您 86个表单按钮JS特效下载链接&#xff1a;https://pan.baidu.com/s/1WwQGFPWv8464JBcuEMJZ_Q?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;…

人工智能算法:理解其工作原理及其在现实世界中的应用

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已逐渐成为我们生活中不可或缺的一部分。从智能语音助手到自动驾驶汽车&#xff0c;再到医疗诊断系统&#xff0c;人工智能算法正以前所未有的速度改变着我们的世界。本文将带您深入探讨人工智能算法的工作原…

模运算的变换公式

这个构造很重要&#xff0c;变形都是基于这个实现的 分配律 &#xff08;1&#xff09; 因此 (a*b) % p ((a%p) * (b%p)) % p (q*r) % p &#xff08;2&#xff09; (ab)%p(a%pb%p)%p &#xff08;3&#xff09; ((ab)%pc)%p ( (ac)%p (b*c)%p )%p

HTTPS证书终于挥下了无情的镰刀-HTTPS证书自动续签方案

现在网站基本都上了 HTTPS 证书 阿里云 SSL 产品日前发布公告&#xff0c;公告显示自 2023 年 11 月 14 日开始生效厂商策略&#xff0c;对于免费提供的 SSL 证书签发后证书有效期统一为 3 个月&#xff0c;不再免费提供 1 年版免费证书。想要 1 年的需要购买 68 块一年。终于…

开源大数据集群部署(十)Ranger usersync部署

作者&#xff1a;櫰木 ranger usersync部署 解压包 [roothd1.dtstack.com ranger]# pwd /opt/ranger [roothd1.dtstack.com ranger]# tar -zxvf ranger-2.3.0-usersync.tar.gz -C /opt/ [roothd1.dtstack.com ranger]# cd ranger-2.3.0-usersync修改配置install.properties…

初识String类和String类的拓展

前言&#xff1a;以下是Java中String类的知识点与一些常见问题和注意事项&#xff0c;如有讲解不妥&#xff0c;请见谅&#xff01; 目录 1.String类的创建及常见API &#xff08;1&#xff09;String类的四种创建方式&#xff1a; 补充&#xff1a;字符串转化成字符数组 / …

使用cocos2d-console初始化一个项目

先下载好cocos2d-x的源码包 地址 https://www.cocos.com/cocos2dx-download 这里使用的版本是 自己的电脑要先装好python27 用python安装cocos2d-console 看到项目中有个setup.py的一个文件 python setup.py 用上面的命令执行一下。 如果执行正常的话回出现上面的图 然后…

使用python-numpy实现一个简单神经网络

目录 前言 导入numpy并初始化数据和激活函数 初始化学习率和模型参数 迭代更新模型参数&#xff08;权重&#xff09; 小彩蛋 前言 这篇文章&#xff0c;小编带大家使用python-numpy实现一个简单的三层神经网络&#xff0c;不使用pytorch等深度学习框架&#xff0c;来理解…

【射影几何15】python双曲几何工具geometry_tools

目录 一、说明二、​环境问题&#xff1a;如何安装三、实现一个简单的例子四、绘制双曲组五、使用有限状态自动机加快速度六、资源和代码 一、说明 Geometry_tools 是一个 Python 包&#xff0c;旨在帮助您处理和可视化双曲空间和射影空间上的群动作。 该包主要构建在 numpy、…

【大厂AI课学习笔记】【1.5 AI技术领域】(10)对话系统

对话系统&#xff0c;Dialogue System&#xff0c;也称为会话代理。是一种模拟人类与人交谈的计算机系统&#xff0c;旨在可以与人类形成连贯通顺的对话&#xff0c;通信方式主要有语音/文本/图片&#xff0c;当然也可以手势/触觉等其他方式 一般我们将对话系统&#xff0c;分…

股价分布统计 100元能买股票吗?

A股的股价一般是多少&#xff1f;100元能买股票吗&#xff1f;能买多少&#xff1f; 一、买入交易规则&#xff1a; 沪深主板(包括中小板)&#xff0c;股票代码以600,000,002开头&#xff0c;每次最低买100股&#xff0c;随后以100股为单位增加&#xff0c;也就是可以买100股&…