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 零值

未初始化的变量会被赋予默认的零值:

  1. 数字类型(包括 int, float64):0
  2. 布尔类型:false
  3. 字符串类型:“”(空字符串)
  4. 指针、切片、映射、通道、函数和接口: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语言入门(运算符)


在这里插入图片描述

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

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

相关文章

粤嵌—2024/5/21—打家劫舍(✔)

代码实现&#xff1a; int rob(int *nums, int numsSize) {if (numsSize 1) {return nums[0];}if (numsSize 2) {return fmax(nums[0], nums[1]);}int dp[numsSize];dp[0] nums[0];dp[1] fmax(nums[0], nums[1]);for (int i 2; i < numsSize; i) {dp[i] fmax(dp[i - 1…

高中数学:平面向量-正交分解、坐标表示、坐标运算

一、正交分解 二、坐标表示 这里注意一点 坐标A(x,y)与向量 a → \mathop{a}\limits ^{\rightarrow} a→的坐标记作&#xff1a; a → \mathop{a}\limits ^{\rightarrow} a→(x,y)&#xff0c;表示方式的区别 引申 三、加减运算的坐标表示 四、数乘运算的坐标表示 引申 两向量…

Go微服务: Nacos的搭建和基础API的使用

Nacos 概述 文档&#xff1a;https://nacos.io/docs/latest/what-is-nacos/搭建&#xff1a;https://nacos.io/docs/latest/quickstart/quick-start-docker/有很多种搭建方式&#xff0c;我们这里使用 docker 来搭建 Nacos 的搭建 这里&#xff0c;我们选择单机模式&#xf…

pytest-sugar插件:对自动化测试用例加入进度条

摘要 在自动化测试过程中&#xff0c;测试进度的可视化对于开发者和测试工程师来说非常重要。本文将介绍如何使用pytest-sugar插件来为pytest测试用例添加进度条&#xff0c;从而提升测试的可读性和用户体验。 1. 引言 自动化测试是软件开发过程中不可或缺的一部分&#xff…

Linux系统命令traceroute详解(语法、选项、原理和实例)

目录 一、traceroute概述 二、语法 1、基本语法 2、命令选项 三、帮助信息 四、示例 1. 使用默认模式&#xff08;ICMP Echo&#xff09;追踪到目标主机 2. 使用UDP模式&#xff08;需要root权限&#xff09;追踪到目标主机 3. 不解析IP地址为主机名&#xff0c;直接显…

纯电动汽车硬件在环测试

纯电动汽车硬件在环测试技术研究综述 1、新能源汽车概述 随着新能源汽车“电动化、智能化、网联化、共享化”进程的不断推进&#xff0c;新能源汽车的整体性能得到显著提高&#xff0c;纯电动汽车已经逐渐走进大众视野&#xff0c;消费者对于新能源汽车的认可度和购买欲望也稳…

让大模型变得更聪明三个方向

让大模型变得更聪明三个方向 随着人工智能技术的飞速发展&#xff0c;大模型在多个领域展现出了前所未有的能力&#xff0c;但它们仍然面临着理解力、泛化能力和适应性等方面的挑战。那么&#xff0c;如何让大模型变得更聪明呢&#xff1f; 方向一&#xff1a;算法创新 1.1算…

粤嵌—2024/5/20—三角形最小路径和(✔)

代码实现&#xff1a; int minimumTotal(int **triangle, int triangleSize, int *triangleColSize) {if (triangleSize 1) {return triangle[0][0];}for (int i 1; i < triangleSize; i) {for (int j 0; j < triangleColSize[i]; j) {int x i - 1;int y1 j - 1, y2…

【数据结构】快速排序详解!

文章目录 1. 快速排序的非递归版本2. 快速排序2.1 hoare 版本一2.2 挖坑法 &#x1f427;版本二2.3 前后指针 版本三2.4 调用以上的三个版本的快排 3. 快速排序的优化 1. 快速排序的非递归版本 &#x1f192;&#x1f427;关键思路&#xff1a; &#x1f34e;① 参数中的begin…

力扣刷题---LCS 02. 完成一半题目【简单】

题目描述 有 N 位扣友参加了微软与力扣举办了「以扣会友」线下活动。主办方提供了 2*N 道题目&#xff0c;整型数组 questions 中每个数字对应了每道题目所涉及的知识点类型。 若每位扣友选择不同的一题&#xff0c;请返回被选的 N 道题目至少包含多少种知识点类型。 示例 1&…

YOLOv10 论文学习

论文链接&#xff1a;https://arxiv.org/pdf/2405.14458 代码链接&#xff1a;https://github.com/THU-MIG/yolov10 解决了什么问题&#xff1f; 实时目标检测是计算机视觉领域的研究焦点&#xff0c;目的是以较低的延迟准确地预测图像中各物体的类别和坐标。它广泛应用于自动…

JVM学习-Class文件结构①

字节码文件的跨平台性 Java语言&#xff1a;跨平台的语言(Write Once,Run Anywhere) 当Java源代码编译成字节码后&#xff0c;如果想在不同平台上运行&#xff0c;则无须再次编译这上优势不再那么吸引人&#xff0c;Python,PHP,Ruby,Lisp等有强大的解释器跨平台似乎已经成为一…

《最新出炉》系列入门篇-Python+Playwright自动化测试-41-录制视频

宏哥微信粉丝群&#xff1a;https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 上一篇讲解和分享了录制自动生成脚本&#xff0c;索性连带录制视频也一股脑的在这里就讲解和分享了。今天我们将学习如何使用Playwright和Python来录制浏览器操作的视频&#…

Overleaf中出现文字越界、越下届、没有正确分页、换页的原因和解决方法

在使用overleaf中&#xff0c;我偶尔会遇到如标题所说的情况&#xff0c;也如图所示&#xff1a; 后来发现&#xff0c;是因为这一页前面是一个表格&#xff0c;所以怀疑是表格的格式导致的。所以让chatgpt帮我更换了表格的格式&#xff0c;成功解决问题。 对于问题可能的成因…

Exel 求某行数最大值

方法1 MAX&#xff08; 选中比较数回车

从感知机到神经网络

感知机 一、感知机是什么二、用感知机搭建简单逻辑电路2.1 与门2.2 与非门2.3 或门 三、感知机的局限性3.1 异或门3.2 线性和非线性 四、多层感知机4.1 已有门电路的组合4.2 Python异或门的实现 五、感知机模型5.1 感知机模型5.2 感知机损失函数5.3 感知机学习算法 六、感知机原…

使用Pyecharts构建Map对象无法显示颜色--解决

我们在做数据可视化的过程中&#xff0c;可能需要使用到地图作为数据可视化的工具&#xff1b; 包括世界地图、国家地图、省市区地图等&#xff1b; 如果在你设置好颜色数据匹配后&#xff0c;可视化地图未显示对应数据的颜色&#xff0c;那么请检查是否出现以下情况&#xf…

安全分析[1]之网络协议脆弱性分析

文章目录 威胁网络安全的主要因素计算机网络概述网络体系结构 网络体系结构脆弱性分组交换认证与可追踪性尽力而为匿名与隐私对全球网络基础实施的依赖无尺度网络互联网的级联特性中间盒子 典型网络协议脆弱性IP协议安全性分析IPSec&#xff08;IP Security)IPv6问题 ICMP协议安…

HTML与CSS的学习

什么是HTML,CSS&#xff1f; HTML(HyperText Markup Language):超文本标记语言。 超文本:超越了文本的限制&#xff0c;比普通文本更强大。除了文字信息&#xff0c;还可以定义图片、音频、视频等 标记语言:由标签构成的语言 >HTML标签都是预定义好的。例如:使用<a>…

c语言:模拟strlen(三种方法)最全版本

1.计数的方法 #include <stdio.h> #include <assert.h> int my_strlen(const char * str)//const的使用优化 {int count0;assert(str)while(*str){count;str;}return count; } 2.用指针的方法&#xff08;指针-指针&#xff09; #include <stdio.h> #incl…