当前位置: 首页 > news >正文

15分钟学Go 第4天:Go的基本语法

第4天:基本语法

在这一部分,将讨论Go语言的基本语法,了解其程序结构和基础语句。这将为我们后续的学习打下坚实的基础。

1. Go语言程序结构

Go语言程序的结构相对简单,主要包括:

  • 包声明
  • 导入语句
  • 函数
  • 语句
1.1 包声明

每个Go语言源文件都应该以包声明开始。包是Go语言的基本管理单位。

package main

main包是程序的入口点,表示可执行程序。

1.2 导入语句

导入语句用于引入其他包。使用import关键字来导入标准库或自定义的包。

import ("fmt"
)
1.3 函数

每个Go程序必须包含一个main函数,这是程序的入口点。

func main() {fmt.Println("Hello, World!")
}
1.4 语句

语句是程序的基本构建块。Go语言的语句通常包括变量声明、控制流语句、表达式等。

2. 基础语句

在Go语言中,有几类基础语句需要掌握:

2.1 变量声明

使用var关键词声明变量,可以指定类型,也可以让编译器自动推断类型。

var a int = 10  // 指定类型
b := 20        // 自动推断类型
语法描述
var x int显式声明整型变量
y := 5隐式声明并赋值
2.2 常量

常量是不可变的值,使用const关键字声明。

const Pi = 3.14
2.3 控制流语句

控制流语句包括条件语句和循环。

2.3.1 条件语句

使用ifelse语句进行条件判断。

if a > b {fmt.Println("a is greater than b")
} else {fmt.Println("b is greater than or equal to a")
}
2.3.2 循环语句

使用for关键字进行循环。

for i := 0; i < 5; i++ {fmt.Println(i)
}
3. 代码运行流程图

下面是第一个Go程序的运行流程图:

开始
执行包声明
导入需要的包
定义main函数
执行主逻辑
结束
4. 实战示例

我们来写一个简单的Go程序,实现用户输入两个数字并计算它们的和。

package mainimport ("fmt"
)func main() {var a, b intfmt.Print("请输入第一个数字: ")fmt.Scanln(&a)fmt.Print("请输入第二个数字: ")fmt.Scanln(&b)sum := a + bfmt.Printf("两个数字的和是: %d\n", sum)
}
4.1 解析代码
  1. 包声明:程序从main包开始。
  2. 导入:通过import导入fmt包进行格式化输出和输入。
  3. 定义变量ab并通过fmt.Scanln获取用户输入。
  4. 计算和并通过fmt.Printf输出结果。
5. 错误处理

Go语言非常注重错误处理。通常,函数会返回一个错误(error)类型,调用者需要检查并处理。

package mainimport ("fmt"
)func divide(a, b int) (int, error) {if b == 0 {return 0, fmt.Errorf("不能除以零")}return a / b, nil
}func main() {result, err := divide(10, 0)if err != nil {fmt.Println("错误:", err)return}fmt.Println("结果:", result)
}

在这个示例中,当发生除以零的情况,程序将返回并处理错误。

6. 格式化输出

在Go语言中,格式化输出使用fmt包。你可以使用不同的格式化标志来控制输出的样式。

name := "Go语言"
age := 10
fmt.Printf("语言:%s,版本:%d\n", name, age)

学习总结

在这一天的学习中,我们讨论了Go语言的基本程序结构和语法,涵盖了包的声明、变量的声明、常量、控制流语句以及如何处理错误。通过实战示例,了解了如何获取用户输入并进行简单的计算。

掌握这些基础知识将为我们后续学习更复杂的Go语言特性奠定正确的基础。接下来,我们将继续深入探索Go语言的特性,并逐渐引入更高级的主题。

练习题

  1. 编写一个Go程序,让用户输入三个数字并输出它们的最大值。
  2. 修改上面的程序,增加错误处理,确保用户输入的数字有效。
  3. 使用循环语句,计算从1到100的数字和,并输出结果。

怎么样今天的内容还满意吗?再次感谢观众老爷的观看,关注下方GZH,回复666,送您价值199的AI大礼包。最后,祝您早日实现财务自由,还请给个赞,谢谢!
在这里插入图片描述

相关文章:

15分钟学Go 第4天:Go的基本语法

第4天&#xff1a;基本语法 在这一部分&#xff0c;将讨论Go语言的基本语法&#xff0c;了解其程序结构和基础语句。这将为我们后续的学习打下坚实的基础。 1. Go语言程序结构 Go语言程序的结构相对简单&#xff0c;主要包括&#xff1a; 包声明导入语句函数语句 1.1 包声…...

【Qt】Qt的介绍——Qt的概念、使用Qt Creator新建项目、运行Qt项目、纯代码方式、可视化操作、认识对象模型(对象树)

文章目录 Qt1. Qt的概念2. 使用Qt Creator新建项目3. 运行Qt项目3.1 纯代码方式实现3.2 可视化操作实现 4. 认识对象模型&#xff08;对象树&#xff09; Qt 1. Qt的概念 Qt 是一个跨平台的 C 图形用户界面应用程序开发框架。它是软件开发者提供的用于界面开发的程序框架&#…...

论文笔记:PTR: Prompt Tuning with Rules for Text Classification

Abstract 手动设计大量语言提示麻烦且易出错&#xff0c;而自动生成的提示&#xff0c;在非小样本场景下验证其有效性昂贵且耗时。因此&#xff0c;提示调优以处理多类别分类任务仍然具有挑战。为此&#xff0c;本文提出使用规则进行多类别文本分类提示调优&#xff08;PTR&…...

服务器和中转机协同工作以提高网络安全

服务器和中转机&#xff08;代理服务器&#xff09;可以通过多种方式协同工作来提高网络安全。 常见的协同工作策略&#xff1a; 1. 使用代理服务器作为安全网关 访问控制&#xff1a;代理服务器可以作为网络的入口点&#xff0c;实施访问控制策略&#xff0c;如基于IP地址、…...

Java利用itextpdf实现pdf文件生成

前言 最近公司让写一个数据页面生成pdf的功能&#xff0c;找了一些市面代码感觉都太麻烦&#xff0c;就自己综合性整合了一个便捷的工具类&#xff0c;开发只需简单组装数据直接调用即可快速生成pdf文件。望大家一起学习&#xff01;&#xff01;&#xff01; 代码获取方式&am…...

2010年国赛高教杯数学建模C题输油管的布置解题全过程文档及程序

2010年国赛高教杯数学建模 C题 输油管的布置 某油田计划在铁路线一侧建造两家炼油厂&#xff0c;同时在铁路线上增建一个车站&#xff0c;用来运送成品油。由于这种模式具有一定的普遍性&#xff0c;油田设计院希望建立管线建设费用最省的一般数学模型与方法。   1. 针对两炼…...

datawhale大模型bot应用开发--task3:工作流

目录 一、介绍&#xff1a;Coze工作流 1.1工作流应用场景 1.2什么是工作流 1.3思考环节 二、各个工作流详情 2.1情感分类工作流 2.2 随机数工作流 2.3 必应搜索工作流 2.4 天气查询工作流 三、集合上面五个工作流的总工作流 一、介绍&#xff1a;Coze工作流 1.1工作…...

期货配资系统风控逻辑开发/完整源代码

期货配资系统风控逻辑的开发是确保系统安全、稳定、高效运行的关键环节。以下是对期货配资系统风控逻辑开发的详细分析&#xff1a; 一、风险识别与评估 风险来源分析&#xff1a; 市场风险&#xff1a;期货市场价格波动带来的风险。信用风险&#xff1a;投资者或配资方违约的…...

汽车免拆诊断案例 | 2023款零跑C01纯电车后备厢盖无法电动打开和关闭

故障现象  一辆2023款零跑C01纯电车&#xff0c;累计行驶里程约为2万km&#xff0c;车主进厂反映&#xff0c;后备厢盖无法电动打开和关闭。 故障诊断  接车后试车&#xff0c;操作后备厢盖外侧、驾驶人侧及遥控钥匙上的后备厢盖开启按钮&#xff0c;可以听到后备厢盖解锁的…...

分布式存储架构 与分布式一致性协议

分布式存储架构可以分为无中心节点架构和有中心节点架构。它们的设计在系统中的角色分配、数据管理、协调方式等方面有所不同。 1. 无中心节点架构&#xff08;Decentralized/Peer-to-Peer Architecture&#xff09; 在无中心节点的分布式存储架构中&#xff0c;所有节点都是…...

Unity Apple Vision Pro 保姆级开发教程 - Simulator 模拟器使用

教程视频 Apple VisionPro Simulator 模拟器使用教程 VsionOS Simulator 简介 visionOS Simulator 是一个用于开发和测试 visionOS 应用程序的工具。它模拟 Apple Vision Pro 的运行环境&#xff0c;帮助开发者在没有硬件设备的情况下创建、调试和优化他们的应用程序。VisionO…...

Vue 之 插件与组件的区别

在 Vue.js 中&#xff0c;插件&#xff08;Plugin&#xff09;和组件&#xff08;Component&#xff09;都是用来扩展 Vue 功能的重要工具&#xff0c;但它们的应用场景和使用方式有所不同。本文将通过对比的方式&#xff0c;帮助开发者更好地理解两者的区别&#xff0c;并通过…...

了解 ChatGPT 中的公平性问题

了解 ChatGPT 中的公平性问题 最近,OpenAI 又发布了一篇新的博客。他们谈论了一个有趣又重要的话题——用户的身份如何影响 ChatGPT 的回答。 这项研究揭示了一个鲜明的事实,那就是 AI 可能会无意间对人类产生刻板印象。很可能这些刻板印象源自 AI 训练过程中使用的数据,而这…...

【PHP】安装swoole时报错:No package ‘libbrotlienc‘ found

一、环境 Debian 11(bullseye) PHP 8.2.14 Swoole 5.1.4 二、过程 今天在安装Swoole 5.1.4的时候报错&#xff0c;错误信息如下&#xff1a; configure: error: Package requirements (libbrotlienc) were not met:No package libbrotlienc foundConsider adjusting the PK…...

postgresql执行计划解读案例

简介 SQL优化中读懂执行计划尤其重要&#xff0c;以下举例说明在执行计划中常见的参数其所代表的含义。 创建测试数据 -- 创建测试表 drop table if exists customers ; drop table if exists orders ; drop table if exists order_items ; drop table if exists products ;…...

Matlab实现粒子群优化算法优化随机森林算法模型 (PSO-RF)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 粒子群优化算法&#xff08;PSO&#xff09;是一种启发式搜索方法&#xff0c;灵感来源于鸟类群体觅食的行为。在PSO中&#xff0c;每个解都是搜索空间中的一个“粒子”&#xff0c;这些粒子以一定的速度飞行&am…...

使用 EasyExcel 相邻数据相同时行和列的合并,包括动态表头、数据

前言 在处理 Excel 文件时&#xff0c;经常会遇到需要对表格中的某些单元格进行合并的情况&#xff0c;例如合并相同的行或列。Apache POI 是一个强大的工具&#xff0c;但它使用起来相对复杂。相比之下&#xff0c;EasyExcel 是一个基于 Apache POI 的轻量级 Excel 处理库&am…...

985研一学习日记 - 2024.10.16

一个人内耗&#xff0c;说明他活在过去&#xff1b;一个人焦虑&#xff0c;说明他活在未来。只有当一个人平静时&#xff0c;他才活在现在。 日常 1、起床6:00√ 2、健身1个多小时 今天练了二头和背部&#xff0c;明天练胸和三头 3、LeetCode刷了3题 旋转图像&#xff1a…...

安装mysql 5.5.62

1>先检查是否存在其他版本mysql rpm -qa|grep -i mariadb 存在则卸载 yum -y remove maria* 2>下载mysql 5.5.62 wget https://cdn.mysql.com/archives/mysql-5.5/mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz 3>确认系统是否安装libaio库 yum -y install libai…...

AnaTraf | 网络性能监控系统的价值

目录 1. IT运维工程师 2. 网络管理员 3. 安全团队&#xff08;网络安全工程师&#xff09; 4. 业务部门&#xff08;应用开发人员、产品经理&#xff09; 5. 管理层与决策者&#xff08;CTO/CIO、IT经理&#xff09; 6. 最终用户&#xff08;普通员工&#xff09; 总结&…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道

文/法律实务观察组 在债务重组领域&#xff0c;专业机构的核心价值不仅在于减轻债务数字&#xff0c;更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明&#xff0c;合法债务优化需同步实现三重平衡&#xff1a; 法律刚性&#xff08;债…...

Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一&#xff1a;HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二&#xff1a;Floyd 快慢指针法&#xff08;…...

土建施工员考试:建筑施工技术重点知识有哪些?

《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目&#xff0c;核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容&#xff0c;附学习方向和应试技巧&#xff1a; 一、施工组织与进度管理 核心目标&#xff1a; 规…...

链式法则中 复合函数的推导路径 多变量“信息传递路径”

非常好&#xff0c;我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题&#xff0c;统一使用 二重复合函数&#xff1a; z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y))​ 来全面说明。我们会展示其全微分形式&#xff08;偏导…...

2025.6.9总结(利与弊)

凡事都有两面性。在大厂上班也不例外。今天找开发定位问题&#xff0c;从一个接口人不断溯源到另一个 接口人。有时候&#xff0c;不知道是谁的责任填。将工作内容分的很细&#xff0c;每个人负责其中的一小块。我清楚的意识到&#xff0c;自己就是个可以随时替换的螺丝钉&…...