9.3 Go语言入门(变量声明和函数调用)
Go语言入门(变量声明和函数调用)
- 目录
- 二、变量声明和函数调用
- 1. 变量声明
- 1.1 使用 var 关键字声明
- 1.2 简短声明
- 1.3 零值
- 1.4 常量
- 2. 函数调用
- 2.1 函数定义
- 2.2 多个返回值
- 2.3 命名返回值
- 2.4 可变参数
- 2.5 匿名函数和闭包
目录
Go 语言(Golang)是一种静态类型、编译型语言,由 Google 开发,专注于简洁性、并发和高效性。
下面是 Go 语言的基础语法讲解和代码示例。
上一篇:一、Go语言入门(包和导入)
二、变量声明和函数调用
在 Go 语言中,变量声明和函数定义是基础语法的重要部分。下面将详细讲解变量声明和函数定义,并提供代码示例。
1. 变量声明
1.1 使用 var 关键字声明
使用 var 关键字可以显式声明变量,并指定类型。也可以在声明时进行初始化。
package mainimport "fmt"func main() {// 声明一个字符串变量并初始化var name string = "Alice"fmt.Println(name)// 声明一个整型变量,未初始化时会使用零值var age intfmt.Println(age) // 默认值 0// 同时声明多个变量var width, height int = 100, 200fmt.Println(width, height)// 类型推断var country = "USA"fmt.Println(country)// 声明布尔变量var isActive bool = truefmt.Println(isActive)
}
1.2 简短声明
使用 := 进行简短声明,类型由右值推断。这种方法只能在函数内部使用。
package mainimport "fmt"func main() {// 简短声明变量name := "Bob"age := 30fmt.Println(name, age)// 同时声明多个变量x, y := 10, 20fmt.Println(x, y)// 声明布尔变量isActive := falsefmt.Println(isActive)
}
1.3 零值
未初始化的变量会被赋予默认的零值:
- 数字类型(包括 int, float64):0
- 布尔类型:false
- 字符串类型:“”(空字符串)
- 指针、切片、映射、通道、函数和接口:nil
package mainimport "fmt"func main() {var a intvar b float64var c boolvar d stringvar e []intfmt.Println(a) // 0fmt.Println(b) // 0fmt.Println(c) // falsefmt.Println(d) // ""fmt.Println(e) // []
}
1.4 常量
使用 const 关键字声明常量,常量在编译时确定,并且不可修改。
package mainimport "fmt"const Pi = 3.14func main() {const Greeting = "Hello, World!"fmt.Println(Pi)fmt.Println(Greeting)
}
2. 函数调用
2.1 函数定义
Go 中的函数定义包括函数名、参数列表、返回值列表和函数体。
package mainimport "fmt"// 定义一个函数,接受两个 int 参数,返回它们的和
func add(x int, y int) int {return x + y
}func main() {sum := add(3, 4)fmt.Println("Sum:", sum)
}
2.2 多个返回值
Go 的函数可以返回多个值。
package mainimport "fmt"// 交换两个字符串
func swap(a, b string) (string, string) {return b, a
}func main() {x, y := swap("hello", "world")fmt.Println(x, y) // 输出:world hello
}
2.3 命名返回值
返回值可以在函数定义中命名,命名返回值在函数体中被初始化为对应类型的零值。return 语句可以返回这些值。
package mainimport "fmt"func split(sum int) (x, y int) {x = sum * 4 / 9y = sum - xreturn // 省略返回变量名,返回 x, y
}func main() {fmt.Println(split(17)) // 输出:7 10
}
2.4 可变参数
使用 … 表示可变参数。
package mainimport "fmt"func sum(numbers ...int) int {total := 0for _, num := range numbers {total += num}return total
}func main() {fmt.Println(sum(1, 2, 3)) // 输出:6fmt.Println(sum(4, 5, 6, 7, 8)) // 输出:30
}
2.5 匿名函数和闭包
匿名函数和闭包在 Go 中也很常见。
package mainimport "fmt"func main() {// 匿名函数add := func(x, y int) int {return x + y}fmt.Println(add(3, 4)) // 输出:7// 闭包counter := func() func() int {i := 0return func() int {i++return i}}()fmt.Println(counter()) // 输出:1fmt.Println(counter()) // 输出:2fmt.Println(counter()) // 输出:3
}
通过理解变量声明和函数定义,可以掌握 Go 语言的基础语法,并有效编写和组织代码。
下一篇:三、Go语言入门(运算符)

相关文章:
9.3 Go语言入门(变量声明和函数调用)
Go语言入门(变量声明和函数调用) 目录二、变量声明和函数调用1. 变量声明1.1 使用 var 关键字声明1.2 简短声明1.3 零值1.4 常量 2. 函数调用2.1 函数定义2.2 多个返回值2.3 命名返回值2.4 可变参数2.5 匿名函数和闭包 目录 Go 语言(Golang&a…...
CVE-2020-7982 OpenWrt 远程命令执行漏洞学习(更新中)
OpenWrt是一款应用于嵌入式设备如路由器等的Linux操作系统。类似于kali等linux系统中的apt-get等,该系统中下载应用使用的是opgk工具,其通过非加密的HTTP连接来下载应用。但是其下载的应用使用了SHA256sum哈希值来进行检验,所以将下载到的数据…...
代码随想录——左叶子之和(Leetcode404)
题目链接 BFS 队列 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right)…...
解禁谷歌等浏览器禁止网站使用麦克等媒体设备
1、浏览器地址栏输入chrome://flags/ 微软的chromium内核的edge浏览器,既可以输入:chrome://flags/ ,也可以输入edge://flags/ 2、打开后,界面如下 3、输入搜索,unsafe,并启用、输入需要启用的网址...
如何彻底卸载sql sever2022
目录 背景过程1、关闭sql sever服务2、打开控制面板,卸载SQL Sever3、手动删除 SQL Server 遗留文件4、清空注册表5、重启计算机以确保所有更改生效。 总结 背景 重装了电脑,安装sqlServer,一直报错,不成功,所以每次安…...
「51媒体」如何与媒体建立良好关系?
传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 与媒体建立良好关系对于企业或个人来说都是一项重要的公关活动。 了解媒体:研究媒体和记者的兴趣,提供相关且有价值的信息。 建立联系:通过专业的方式…...
Selenium 库的爬虫实现
Selenium 是什么? Selenium 是一个用于自动化 Web 应用程序测试的工具。它提供了一个用于测试网站的框架,可以模拟用户在浏览器中的操作,如点击链接、填写表单、提交数据等。Selenium 可以在多种浏览器和操作系统上运行,并且支持…...
【文末附gpt升级方案】数据虚拟化技术的优势
数据虚拟化技术的优势主要体现在以下几个方面: 提高资源利用率和降低成本: 数据虚拟化可以显著减少物理硬件的需求,从而降低硬件成本。通过虚拟化,企业可以利用数据中心提供的规模经济优势,使用更少的服务器来完成相同…...
C++ 常量和变量
1 常量 具体把数据写出来 2,3,4;1.2 1.3;“Hello world!”,“C” cout<<2015 常量:不能改变的量。 字面常量(字面量、直接常量):直接写出的数据。 符号常量:用符号表示数据,但它一旦确定…...
【cocos creator 】生成六边形地图
想要生成一个六边形组成的地图 完整代码示例 以下是完整的代码示例,包含了注释来解释每一步: cc.Class({extends: cc.Component,properties: {hexPrefab: {default: null,type: cc.Prefab},mapWidth: 10, // 网格的宽度(六边形的数量&am…...
TypeScript类型体操练习
历史小剧场 这个世界上,有两种人最痛苦,第一种是身居高位者,第二种是身居底层者,第一种人很少,第二种人很多。第一种人叫崇祯,第二种人叫百姓。 而最幸福的,就是中间那拨人,主要工作…...
leetcode231-Power of Two
题目 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n 2x ,则认为 n 是 2 的幂次方。 示例 1: 输入:n 1 输出࿱…...
贪心算法简单介绍
贪心算法是一种在每一步选择中都采取当前状态下最优或最优近似的选择,以期望最终得到全局最优解的算法。贪心算法并不总能得到全局最优解,但在某些问题上,它可以得到全局最优解,并且比动态规划等其他方法更为简单和高效。 贪心算…...
眼底项目经验
眼底项目经验 可解释性不足问题眼底项目有多牛逼可解释性不足解法数据、算力、算法都免费送不仅预测当下,还能预测未来和慢病管理整合,形成一个实时健康检测生态 可解释性不足问题 今天下午和腾讯眼底项目人员讨论, 他们不准备做全身性的多疾种, 因为深…...
使用arco design实现动态列信息的表格
目录 1.说明 2.普通表格的实现 3.动态表格的实现 1.说明 在前端画面中,表格一般用来展示列表数据,并且可以实现分页,应用很广泛,关于表格的列信息,一般是固定的,也可以是变化的,根据后端传递…...
解决 fatal: Not a git repository (or any of the parent directories): .git 问题
解决方法:在命令行 输入 git init 然后回车就好了...
Spring 模拟管理Web应用程序
MVC:Model View Controller 1)controller:控制层(Servlet是运行服务器端,处理请求响应java语言编写技术) 2)service:业务层(事务,异常) 3…...
修改了vue3 <script setup>留言板
Лунная ночь <template><button class"edit_view_checkbox"><input type"checkbox" v-model"editshowInput" value"编辑" /></button><div class"editshowInput" v-if"editshowI…...
jQuery 常用API
一、jQuery 选择器 1、jQuery 基础选择器 原生JS获取元素方式很多,很杂,而且兼容性情况不一致,因此jQuery给我们做了封装,使获取元素统一标准 2、jQuery 层级选择器 3、隐式迭代 遍历内部 DOM 元素(伪数组形式存储&am…...
内网安全-隧道搭建穿透上线内网穿透-nps自定义上线内网渗透-Linux上线-cs上线Linux主机
目录 内网安全-隧道搭建&穿透上线内网穿透-nps-自定义-上线NPS工具介绍搭建过程 nps原理介绍MSF上线CS上线 内网渗透-Linux上线-cs上线Linux主机1.下载插件2.导入插件模块3.配置监听器4.服务端配置5.配置C2监听器并生成木马6.执行木马 内网安全-隧道搭建&穿透上线 内网…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
