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…

安全性基础知识

文章目录 1.计算机安全概述2.网络攻击3.两类密码体制4.数字签名与消息摘要5.网络安全 1.计算机安全概述 计算机安全可包括安全管理、通信与网络安全、密码学、安全体系及模型、容错与容灾、涉及安全的应用程序及系统开发、法律、犯罪及道德规范等领域。 信息安全的5个基本要素…

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

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

Flutter 中的 PhysicalShape 小部件:全面指南

Flutter 中的 PhysicalShape 小部件&#xff1a;全面指南 在Flutter中&#xff0c;PhysicalShape小部件是一个能够为子组件添加物理效果的边框和阴影的装饰性小部件。它能够模拟真实世界中物体的立体感&#xff0c;通过在子组件的周围创建一个可自定义的形状&#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…

JVM CMS 在Full GC时针对跨代引用的优化

个人博客 JVM CMS 在Full GC时针对跨代引用的优化 | iwts’s blog 跨代引用问题 Full GC慢的一个很重要的问题&#xff1a;跨代引用。 简单描述就是&#xff1a; 现代JVM一般是根据对象存活的特性进行了分代&#xff0c;提高了垃圾收集的效率。但是像在回收新生代的时候&a…

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;直接显…

K8s Pod 资源进阶

文章目录 K8s Pod 资源进阶pod 资源限制限制资源单位 资源限制实战Pod 服务质量QosDownward API可注入的元数据信息环境变量方式注入元数据存储卷方式注入元数据为注册服务注入Pod 名称为 JVM 注入堆内存限制 K8s Pod 资源进阶 pod 资源限制 资源限制的方法&#xff1a; Req…

厨房防蟑螂3个避坑细节

厨房发黑有蟑螂咋办      检查3个地方&#xff0c;想要厨房卫生干净      1&#xff0c;台面和墙中间这个缝别用美缝剂&#xff0c;      不想后期剁骨头开裂进水&#xff0c;就用有弹性的防霉玻璃胶      2&#xff0c;水槽的下水管用u型存水弯      可以…

纯电动汽车硬件在环测试

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

Crontab 自动脚本实例 | 校园网保持联网

唠唠闲话 自动化脚本的用途广泛&#xff0c;比如自动挂载磁盘&#xff0c;自动登录校园网等。本篇将介绍 crontab 这一自动脚本执行工具。 Crontab 简介 crontab 是类 Unix 操作系统中用于设置周期性执行任务的工具。crontab&#xff08;代表 “cron table”&#xff09;允许…

php 设置时区

date_default_timezone_set() 设置所有日期/时间函数使用的默认时区 除了在脚本中使用此函数设置默认时区&#xff0c;还可以使用 INI 设置 date.timezone 设置默认时区。 参数 timezoneId 时区标识符&#xff0c;像 UTC、Africa/Lagos、Asia/Hong_Kong 或 Europe/Lisbon。…

Element-UI详解

Element-UI详解 一、Element-UI的特点1. 完整性2. 易用性3. 美观性4. 可扩展性 二、Element-UI的安装和使用1. 安装2. 引入 Element-UI3. 使用组件 三、核心组件详解1. 布局组件示例 2. 表单组件示例 3. 数据展示组件示例 4. 反馈组件示例 5. 导航组件示例 四、Element-UI的应用…

Codeforces Round 927 (Div. 3) D. Card Game 题解 贪心

Card Game 题目描述 Two players are playing an online card game. The game is played using a 32-card deck. Each card has a suit and a rank. There are four suits: clubs, diamonds, hearts, and spades. We will encode them with characters ‘C’, ‘D’, ‘H’, …

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

让大模型变得更聪明三个方向 随着人工智能技术的飞速发展&#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…

MySQL基础_6.函数

文章目录 一.不同DBMS函数的差异二.单行函数三.聚合函数3.1 常用聚合函数3.2 GROUP BY 四.SELECT的执行顺序4.1 写SELECT的顺序4.2 SELECT 的执行顺序 一.不同DBMS函数的差异 我们在使用 SQL 语言的时候&#xff0c;不是直接和这门语言打交道&#xff0c;而是通过它使用不同的…

5-26 Cpp学习笔记

1、如果子类实现了基类的函数&#xff0c;返回值、参数都相同&#xff0c;就覆盖了基类的函数。 2、使用作用域解析运算符来调用基类的函数。myDinner.Swim(); —— 调用子类的。myDinner.Fish::Swim(); —— 调用基类的(基类是Fish) 3、在子类中使用关键字using解除对Fish::…