【GO语言基础】函数

news2024/12/22 20:19:53

系列文章目录

【Go语言学习】ide安装与配置
【GO语言基础】前言
【GO语言基础】变量常量
【GO语言基础】数据类型
【GO语言基础】控制流
【GO语言基础】函数

文章目录

  • 系列文章目录
  • 函数
    • 基础函数
    • 调用
  • GoLang API(包)简单介绍
    • 标准库:
    • 第三方库:
    • 自定义库
    • 使用cdn加速拉取第三方包


函数

函数的定义:

func functionName(parameter1 type1, parameter2 type2, ...) returnType {
    // 函数体
    // 可以执行一系列操作
    return returnValue // 可选
}

基础函数

基本函数

func Add() {
}

错误写法:注意不要将第一个括号放新行

func Add()
{
}

在这里插入图片描述
简单写一个累加函数并调用:

package main

import "fmt"

// 累加函数
func Add(a int) int {
	var sum int
	for i := 1; i <= a; i++ {
		sum += i
	}
	return sum
}
func main() {
	
	fmt.Println(Add(100))

}

调用

调用基本格式:pack1.Function(arg1, arg2, …, argn)
Functionpack1 包里面的一个函数,括号里的是被调用函数的实参(argument):这些值被传递给被调用函数的形参(parameter)。

调用函数时,只需使用函数名称和相应的参数值。如果函数有返回值,可以将其赋给一个变量。

package main

import "fmt"
//定义Add函数
func Add(a, b float64) float64 {
	return a + b

}
func main() {
	//调用Add函数,计算a+b
	result := Add(5.15, 3.152)
	fmt.Println(result)

}

函数作为参数调用:

package main

import "fmt"

// 定义一个函数f2,它接受两个整数参数并返回它们的和、差、积
func f2(a, b int) (int, int, int) {
    sum := a + b
    diff := a - b
    product := a * b
    return sum, diff, product
}

// 定义一个函数f1,它接受一个函数f作为参数,调用f并打印返回值
func f1(f func(int, int) (int, int, int)) {
    // 调用传入的函数f
    result1, result2, result3 := f(5, 3)
    
    // 打印返回值
    fmt.Printf("Sum: %d, Difference: %d, Product: %d\n", result1, result2, result3)
}

func main() {
    // 将函数f2作为参数传递给函数f1
    f1(f2)
}

在这里插入图片描述

GoLang API(包)简单介绍

Go语言API(Application Programming Interface)是Go语言提供的一组规范和定义,用于编写可重用的软件组件和应用程序。API定义了应用程序如何与底层系统、库和其他程序进行交互的细节。

标准库:

Go语言的标准库提供了许多基础的API,例如fmt(格式化输出)、os(操作系统接口)、time(时间处理)等。
中文网API

import "fmt"  
fmt.Println("Hello, World!")

第三方库:

许多第三方库也提供了Go语言的API,例如Gin(用于构建Web应用程序的API)、Gorm(用于数据库操作的API)等。

例如:使用mysql API

go get github.com/go-sql-driver/mysql
或
import "github.com/go-sql-driver/mysql"

自定义库

你也可以创建自己的API来提供特定的功能或服务。这通常涉及创建一个包,并在其中定义函数、类型和变量。然后,你可以将该包发布到适当的存储库或与其他人共享。

// mypackage包提供了自定义的API  
package mypackage  
  
import "fmt"  
  
// MyFunction是一个自定义函数,可以在其他程序中使用  
func MyFunction() {  
    fmt.Println("Hello from mypackage!")  
}

使用自定义库时,你需要将该库导入到你的程序中,然后就可以使用其中的API了。

使用cdn加速拉取第三方包

使用Goland加速:
在这里插入图片描述
启用go模块集成
在这里插入图片描述

# 1. 七牛 CDN
GOPROXY=https://goproxy.cn,direct
# 2. 阿里云
GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
# 3. 官方
GOPROXY=https://goproxy.io,direct

添加后应用:
然后go get拉取需要的包即可
在这里插入图片描述

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

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

相关文章

【计算思维题】少儿编程 蓝桥杯青少组计算思维 数学逻辑思维真题详细解析第9套

蓝桥杯青少组计算思维 数学逻辑思维真题详细解析第9套 第十四届蓝桥杯省赛真题 1、要把下面4张图片重新排列成蜗牛的画像,该如何排列这些图片 A、 B、 C、 D、 答案:A 考点分析:主要考查小朋友们的观察能力空

轻松部署高颜值社区,在Ubuntu上搭建Cpolar+HYBBS论坛指南

文章目录 前言1. HYBBS网站搭建1.1 HYBBS网站安装1.2 HYBBS网站测试1.3. cpolar的安装和注册 2. 本地网页发布2.1.Cpolar临时数据隧道2.2.Cpolar稳定隧道&#xff08;云端设置&#xff09;2.3.Cpolar稳定隧道&#xff08;本地设置&#xff09; 3.公网访问测试总结 前言 在国内互…

可靠又稳定些的微信管理系统

微信管理系统 --- 简单点说就是&#xff1a;微信的管理和营销系统。再通俗一些就是&#xff1a;利用微信与管理营销相结合的一种新型的办公方式。 不用下载任何软件&#xff0c;不需要多部手机&#xff0c;对手机型号没有任何要求&#xff0c;不需要刷机等等&#xff0c;并且稳…

腾讯云4核8G云服务器租用价格选轻量还是CVM?性能如何?

腾讯云4核8G云服务器可以选择轻量应用服务器或CVM云服务器标准型S5实例&#xff0c;轻量4核8G12M服务器446元一年&#xff0c;CVM S5云服务器935元一年&#xff0c;相对于云服务器CVM&#xff0c;轻量应用服务器性价比更高&#xff0c;轻量服务器CPU和CVM有区别吗&#xff1f;性…

c高级 day4

实现一个对数组求和的函数&#xff0c;数组通过实参传递给函数 #!/bin/bashread -p "请输入数组:" -a arrfunction sum() {sum0for i in ${arr[*]}do((sumsumi))doneecho "数组和:"$sum }sum写一个函数&#xff0c;输出当前用户的uid和gid&#xff0c;并使…

【Java】过滤器和拦截器区别

文章目录 前言1、过滤器 (Filter)2、拦截器 (Interceptor)3、我们不一样3.1、实现原理不同3.2、使用范围不同3.3、触发时机不同 4、拦截的请求范围不同5、注入Bean情况不同6、控制执行顺序不同总结 前言 准备环境 我们在项目中同时配置 拦截器 和 过滤器。 1、过滤器 (Filter…

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡

文章目录 1. 配置反向代理1.1 前置准备1.2 代理服务器配置1.3 真实服务器配置1.4 客户机配置 2. Tomcat 多实例部署2.1 部署JDK2.2 设置JDK环境变量2.3 部署Tomcat服务2.4 路径启动 3. Nginx联动Tomcat实现动静分离、负载均衡3.1 基本原理3.2 前置准备3.3 配置nginx1实现四层代…

2023.9.8 基于传输层协议 UDP 和 TCP 编写网络通信程序

目录 UDP 基于 UDP 编写网络通信程序 服务器代码 客户端代码 TCP 基于 TCP 编写网络通信程序 服务器代码 客户端代码 IDEA 打开 支持多客户端模式 UDP 特点&#xff1a; 无连接性&#xff1a;发送端和接收端不需要建立连接也可相互通信&#xff0c;且每个 UDP 数据包都…

sql注入基本概念

死在山野的风里&#xff0c;活在自由的梦里 sql注入基本概念 MYSQL基本语法union合并查询2个特性&#xff1a;order by 排序三个重要的信息 Sql Server MYSQL 基本语法 登录 mysql -h ip -u user -p pass基本操作 show databases; 查看数据库crea…

串行数据发送器

框图 THR&#xff1a;发送保持寄存器 定义了两种状态&#xff1a;空&#xff0c;满数据写入端口地址&#xff1a;00H状态读出端口地址&#xff1a;00H当THR不满时&#xff0c;可以向THR写入数据 TSR&#xff1a;发送移位寄存器 一旦TSR空而THR中有数据时&#xff0c;THR中的数…

Ubuntu服务器安装Nvidia显卡驱动各类失败问题的解决方案集合

前言 给实验室服务器安装显卡驱动&#xff0c;总是遇到各种各样的问题。故而专门开一个文章记录一下遇到的各类问题。 正常安装方法 在这里安装CUDA&#xff0c;选择最新版本后根据系统配置点选即可&#xff0c;会自动生成对应的链接&#xff0c;如下图。这里选runfile&…

Mysql join用法详解

本篇文章旨在详细讲解Mysql 中join的用法&#xff0c;并附上例题。 一. left join 首先附上图 这个查询语句最根本的是要找出A表中所有的行&#xff0c; 所以如图所示&#xff0c;A表整个被涂蓝 A与B交叉的那部分可以视为ON后所跟的条件 重点是&#xff1a; 如果A表中有一条…

C#学习 - 方法的定义、调用、调试

方法 方法&#xff08;Method&#xff09;是由C/C中的函数&#xff08;Function&#xff09;发展而来的 //C语言 #include <stdio.h> int Add(int x, int y) {return x y; }//函数 int main(void) {int a 4;int b 2;int c Add(a, b);printf("%d %d %d\n&quo…

mysql 删除索引 索引长度还在,数据内存 索引内存没有减少

在我们针对数据表进行了大量删除或者删除掉某个无用的索引之后&#xff0c;该表占的数据内存或者索引并没有明显的变换&#xff0c;这是因为删除操作后在数据文件中留下碎片所致。 查看数据与索引 SELECTTABLE_NAME,concat( TRUNCATE ( data_length / 1024 / 1024, 2 ), MB …

腾讯云4核8G服务器CVM S5性能测评(CPU/流量/系统盘)

腾讯云4核8G服务器CVM标准型S5实例性能测评&#xff0c;包括CPU型号、内存、系统盘、CVM实例规格性能测评&#xff0c;腾讯云4核8G租用优惠价格表&#xff0c;腾讯云服务器网分享腾讯云4核8G服务器CVM S5性能测评和租用费用&#xff1a; 目录 腾讯云4核8G服务器CVM S5性能测评…

【C++】简单理解:将整数(浮点数)转换为字符串(string),将字符串(string)转换为整数(浮点数)方法

用stringstream类&#xff0c;口诀&#xff1a;过滤一下就转化 头文件#include<sstream> 例子&#xff1a;将整数12和浮点数12.34转化为字符串 int main() {int x 12;double d 12.34;string s;//创建一下对象strstringstream str;//过滤一下就转化str << x;st…

分享芯片行业有趣的小知识

随着拜登签署《芯片与科学家法案》&#xff0c;全球芯片争夺战进一步升温&#xff0c;我国芯片市场再次面临霸权主义的挑战。尽管困难重重&#xff0c;我们决不会停止在芯片领域的探索与发展&#xff0c;这彰显了芯片对国家的至关重要性。除了其重要性&#xff0c;芯片还有许多…

矿山边坡安全监测及预警系统解决方案

1.建设背景 近年来&#xff0c;矿山安全问题一直受到国家和社会的高度关注。为了全面提升矿山安全生产水平&#xff0c;国家矿山安全监察局和各省级非煤矿山安全监管部门开展了一项重大举措&#xff1a;推广并实施露天矿山边坡监测系统。 矿山边坡和排土场安全是露天矿山安全生…

vs2019配置sfml外部库出现的问题

问题描述 在debug模式下程序正常运行&#xff0c;在release模式中报错 解决 C/C Windows环境下 boost 安装使用教程 Debug 通常称为调试版本&#xff0c;它包含调试信息&#xff0c;并且不作任何优化&#xff0c;便于程序员调试程序。 Release&#xff1a;Release通常称为发…

【HCIE】03.BGP高级特性

每一条BGP路由都可以携带多个路径属性&#xff0c;针对其属性也有特有的路由匹配工具&#xff0c;包括&#xff1a;AS Path Filter和Community Filter。 import方向的属性&#xff0c;出现在如策略里面&#xff0c;加入到BGP路由表中&#xff0c;再传给路由表里&#xff0c;出去…