首页 > 其他分享 >Golang学习笔记_02——函数

Golang学习笔记_02——函数

时间:2024-12-11 19:30:46浏览次数:7  
标签:02 int sum testing 笔记 Golang func diff fmt

Golang测试功能应用
Golang学习笔记_01——包


函数

文章目录


Go语言中的函数是一种基本的编程结构,用于封装一段代码,以便在需要时多次调用。函数可以接收参数并返回结果,是实现代码复用和模块化编程的重要手段。

1. 定义

在Go语言中,函数通过func关键字定义。一个基本的函数定义包括函数名、参数列表、返回类型(如果有的话)、以及函数体。

当连续两个或多个函数的已命名形参类型相同时,除最后一个类型以外,其它都可以省略。

package function_demo

func add(a int, b int) int {
	return a + b
}


add函数接收两个int类型的参数,并返回一个int类型的结果。

对刚刚定义的函数进行测试

package function_demo

import (
	"fmt"
	"testing"
)

func TestFunctionDemo(t *testing.T) {
	fmt.Println("sum = ", add(1, 2))
}

测试结果

=== RUN   TestFunctionDemo
sum =  3
--- PASS: TestFunctionDemo (0.00s)
PASS

2. 返回值

Go语言中的函数可以返回多个值。这在处理错误或其他需要返回多个结果的情况下非常有用。

func AddAndSubtract(a int, b int) (int, int) {
	sum := a + b
	diff := a - b
	return sum, diff
}

测试方法

func TestAddAndSubtract(t *testing.T) {

	sum, diff := AddAndSubtract(100, 99)
	fmt.Println("sum = ", sum, "\n", "diff = ", diff)

}

输出结果

=== RUN   TestFunctionDemo2
sum =  199 
diff =  1
--- PASS: TestFunctionDemo2 (0.00s)
PASS

3. 命名返回值

Go语言支持命名返回值,这可以让代码更加清晰和简洁。

命名返回值在函数定义时指定名称,并在函数体中直接使用这些名称,最后通过裸返回(即直接写return)来返回这些值。

func addAndSubtractNamed(a int, b int) (sum int, diff int) {
	sum = a + b
	diff = a - b
	return sum, diff
}

测试方法

func Test_addAndSubtractNamed(t *testing.T) {
	sum, diff := AddAndSubtract(1000, 99)
	fmt.Println("sum = ", sum, "\n", "diff = ", diff)
}

输出结果

=== RUN   Test_addAndSubtractNamed
sum =  1099 
 diff =  901
--- PASS: Test_addAndSubtractNamed (0.00s)
PASS

4. 可变参数

Go语言中的函数也支持可变参数(即接收不定数量的参数)。

通过将一个参数类型设置为...T(其中T是参数类型),可以定义一个可变参数列表。

func sumAll(nums ...int) int {
	sum := 0
	for _, num := range nums {
		sum += num
	}
	return sum
}

测试方法

func Test_sumAll(t *testing.T) {
	fmt.Println("sum all = ", sumAll(1, 2, 3, 100, -90))
}

输出结果

=== RUN   Test_sumAll
sum all =  16
--- PASS: Test_sumAll (0.00s)
PASS

源码

// function_demo.go
package function_demo

func add(a int, b int) int {
	return a + b
}

func AddAndSubtract(a int, b int) (int, int) {
	sum := a + b
	diff := a - b
	return sum, diff
}

func addAndSubtractNamed(a int, b int) (sum int, diff int) {
	sum = a + b
	diff = a - b
	return sum, diff
}

func sumAll(nums ...int) int {
	sum := 0
	for _, num := range nums {
		sum += num
	}
	return sum
}

// function_demo_test.go
package function_demo

import (
	"fmt"
	"testing"
)

func TestFunctionDemo(t *testing.T) {
	fmt.Println("sum = ", add(1, 2))
}

func TestAddAndSubtract(t *testing.T) {

	sum, diff := AddAndSubtract(100, 99)
	fmt.Println("sum = ", sum, "\n", "diff = ", diff)

}

func Test_addAndSubtractNamed(t *testing.T) {
	sum, diff := AddAndSubtract(1000, 99)
	fmt.Println("sum = ", sum, "\n", "diff = ", diff)
}

func Test_sumAll(t *testing.T) {
	fmt.Println("sum all = ", sumAll(1, 2, 3, 100, -90))
}

标签:02,int,sum,testing,笔记,Golang,func,diff,fmt
From: https://blog.csdn.net/LuckyLay/article/details/144371981

相关文章

  • 南京航空航天大学《2024年820自动控制原理真题》 (完整版)
    本文内容,全部选自自动化考研联盟的:《南京航空航天大学820自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~目录2024年真题Part1:2024年完整版真题2024年真题......
  • IDEA 2024.3 有效激活码,解决 We could not validate your license ff83b7bd51f5460ca4
    温馨提示:若激活失败或提示[keyisinvalid]的话需要完全卸载或尝试执行卸载脚本,然后重新安装即可解决;如果修改过host,请删除你添加的网址,如以前破解过,请完全卸载,重新安装;最新激活码激活失败,请重启重试。若提示Wecouldnotvalidateyourlicenseff83b7bd51f5460ca43aabd7a96......
  • linux/centOS7用户和权限管理笔记
    linux系列中可以:配置多个用户配置多个用户组用户可以加入多个用户中linux中关于权限的管理级别有2个级别,分别是:针对用户的权限控制针对用户组的权限控制一,root用户root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的二,用户组的管理(root用户执行)1.创建用......
  • linux/centOS7用户和权限管理笔记练习
    1.创建用户组bigdata2.创建用户dsj,指定基本组bigdata,附加组bigdata2,指定home目录为/home/dsj3.查看用户4.创建用户dsj2,指定基本组为bigdata2,附加组为bigdata,指定uid为24025.查看dsj2用户6.从root用户切换到dsj用户7.切回root用户 8.给dsj2用户添加密码 9.......
  • 2024国城杯-Crypto
    babyRSA考察的是Schmidt-Samoa密码体系fromCrypto.Util.numberimport*importgmpy2n=5394038948719457798272021740613029703410824559283641374449628443590399241601631968636397327472613163520839237627603922775365911217062706807341755440934844235642236796284......
  • 2023楚慧杯
    Easy_zip解压附件名字为4096.zip猜测总共有4096个压缩包importzipfileimportosdefdecompress_zip(archive_file):withzipfile.ZipFile(archive_file,'r')aszip_ref:zip_ref.extractall(path="tmp/")os.remove(archive_file)......
  • 2024鹏城杯-misc
    网安第一课改zip解压找到key1key26iMmn76ucYG9PDtsvu解压之后上脚本fromPILimportImageimages=[Image.open(f"{i}.png")foriinrange(1,38)]qr_code=Image.new("RGB",(128,128),(255,255,255))foriinrange(37):img1=images[i]......
  • 基于51单片机和LCD1602的自制独立按键控制的小游戏《贪吃蛇》
    目录系列文章目录前言一、效果展示二、原理分析三、各模块代码1、定时器02、八位独立按键3、LCD1602四、主函数附录A:编程遇到的问题总结系列文章目录前言《贪吃蛇》,一款经典的、怀旧的小游戏,单片机入门必写程序。基于51单片机和8X8LED点阵屏(板载74HC595驱动)的矩......
  • (2024最新毕设合集)基于的同城学校二手交易平台|可做计算机毕业设计JAVA、PHP、爬虫、AP
    同城学校二手交易平台设计与实现摘 要利用SpringBoot框架和相关Uni-app技术,设计和实现一个高效、可靠的同城学校二手交易平台。该系统将提供闲置、发布、求购等主要功能,旨在促进二手交易平台的便捷和透明化。本研究首先介绍了同城学校二手交易平台的研究背景和现状,包括同城......
  • 用户画像--《美团机器学习实践》笔记
    原文:https://cloud.tencent.com/developer/article/2212164最近学习了用户画像方面的内容,本文主要是学习《美团机器学习实践》的读书笔记。 什么是用户画像?用户模型和用户画像的区别。用户模型是指真实用户的虚拟代表,在真实数据的基础上抽象处理的一个用户模型,是产品在描述用......