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.执行木马 内网安全-隧道搭建&穿透上线 内网…...
Claude Code能控制电脑了!开发全程不离终端,全无人值守模式启动
在官方演示中,只甩一个指令过去,AI就自己启动正在开发的应用,自己复现bug,自己修复,自己测试修复效果。 Claude Code上线Computer Use,直接捅破开发效率天花板。 在官方演示中,只甩一个指令过…...
springboot+vue基于web的电脑配件商城的设计系统
目录 同行可拿货,招校园代理 ,本人源头供货商系统功能模块划分技术架构设计要点特色功能实现路径安全防护措施扩展性考虑 项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作 同行可拿货,招校园代理 ,本人源头供货商 系统功能模块…...
LFM2.5-1.2B-Thinking-GGUF算法解析应用:图解经典算法与复杂度分析
LFM2.5-1.2B-Thinking-GGUF算法解析应用:图解经典算法与复杂度分析 1. 算法可视化教学新范式 算法学习一直是计算机科学教育中的难点。传统的教科书讲解方式往往让初学者感到抽象难懂,而LFM2.5-1.2B-Thinking-GGUF模型为算法教学带来了全新的可视化解决…...
AFL++实战:从零开始用WSL搭建模糊测试环境(附libxml2案例)
AFL实战指南:WSL环境下的模糊测试从入门到精通 模糊测试(Fuzz Testing)作为软件安全测试的重要手段,近年来在漏洞挖掘领域展现出惊人的效果。对于Windows平台开发者而言,Windows Subsystem for Linux(WSL&…...
ssm+java2026年毕设体育赛事管理系统App【源码+论文】
本系统(程序源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、选题背景关于赛事管理问题的研究,现有研究主要以大型综合性体育赛事(如奥运会、亚运会)的信息化管理…...
告别答辩 PPT 熬夜局!PaperXie AI 一键生成,3 分钟拿捏学术范答辩神器
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 一、开题答辩人破防瞬间:PPT 做得好,答辩分数高一半 “论文写完了,PPT 才是真正的修罗场…...
5分钟掌握:billd-desk跨平台远程控制高效解决方案
5分钟掌握:billd-desk跨平台远程控制高效解决方案 【免费下载链接】billd-desk 基于Vue3 WebRTC Nodejs Flutter搭建的远程桌面控制 项目地址: https://gitcode.com/gh_mirrors/bi/billd-desk 还在为远程办公的卡顿和限制而烦恼吗?当你急需远程…...
避坑指南:lidar_align标定IMU外参时,loader.cpp源码修改与运动轨迹设计的那些关键细节
避坑指南:lidar_align标定IMU外参的核心细节与实战优化 在自动驾驶和机器人定位领域,激光雷达与IMU的联合标定是系统搭建的关键环节。许多开发者在初次使用lidar_align工具时会遇到各种问题——从源码适配的困惑到标定结果的不可靠。本文将深入剖析两个最…...
Qwen3-0.6B应用案例:如何用它快速生成文案和邮件回复
Qwen3-0.6B应用案例:如何用它快速生成文案和邮件回复 1. 引言:轻量级AI写作助手 在日常工作中,我们经常需要处理大量文字工作:撰写产品介绍、回复客户邮件、编写营销文案等。这些任务虽然不复杂,但耗时耗力。Qwen3-0…...
Gemma-3 Pixel Studio一文详解:Flash Attention 2对图文响应速度提升实测
Gemma-3 Pixel Studio一文详解:Flash Attention 2对图文响应速度提升实测 1. 引言 在当今多模态AI应用快速发展的背景下,Gemma-3 Pixel Studio作为一款基于Google最新开源Gemma-3-12b-it模型构建的高性能对话终端,凭借其卓越的视觉理解能力…...
