Go语言入门指南
Go语言入门指南
Go语言,通常称为Golang,是一门由Google开发的开源编程语言。它因其简洁、高效和强大的特性而备受开发者欢迎。本篇博客将带你深入了解Go语言的基础知识,让你能够开始编写自己的Go程序。
为什么选择Go语言?
在学习一门新的编程语言之前,了解它的优点是很重要的。Go语言有以下几个主要优点:
-
简单易学:Go语言的语法相对简单,容易上手,尤其适合初学者。
-
高效:Go语言的编译速度快,执行速度也很快,使其成为开发高性能应用的理想选择。
-
并发支持:Go内置了强大的并发支持,通过goroutines和channels,你可以轻松编写并发程序。
-
开源社区:Go语言有一个活跃的开源社区,提供了丰富的库和工具,方便开发者使用。
-
跨平台:Go语言支持多种操作系统,包括Windows、Linux和macOS,使你可以轻松开发跨平台应用。
安装Go
要开始学习和编写Go程序,首先需要在你的计算机上安装Go。以下是安装Go的步骤:
-
访问 Go官方网站 并下载适合你操作系统的安装包。
-
执行安装包并按照提示完成安装。
-
验证安装是否成功,在命令行中运行以下命令:
go version
如果显示Go的版本信息,则表示安装成功。
Hello, World!
接下来,让我们来编写第一个Go程序,经典的“Hello, World!”。打开你喜欢的文本编辑器,创建一个名为hello.go
的文件,然后输入以下内容:
package mainimport "fmt"func main() {fmt.Println("Hello, World!")
}
保存文件后,使用命令行进入文件所在的目录,运行以下命令来编译并运行程序:
go run hello.go
你将在终端上看到输出:“Hello, World!”。这是一个简单的Go程序,让你熟悉了基本的结构。
变量和数据类型
在Go中,声明变量时需要指定其数据类型。以下是一些常见的数据类型和变量声明的示例:
- 整数:
var num1 int // 声明一个整数变量
num1 = 42 // 赋值
num2 := 100 // 简短声明并初始化一个整数变量
- 浮点数:
var float1 float64 // 声明一个浮点数变量
float1 = 3.14 // 赋值
float2 := 2.718 // 简短声明并初始化一个浮点数变量
- 字符串:
var str1 string // 声明一个字符串变量
str1 = "Hello" // 赋值
str2 := "World" // 简短声明并初始化一个字符串变量
- 布尔值:
var isTrue bool // 声明一个布尔值变量
isTrue = true // 赋值
isFalse := false // 简短声明并初始化一个布尔值变量
控制结构
Go语言支持常见的控制结构,如条件语句和循环。以下是一些示例:
- 条件语句:
if x > 10 {fmt.Println("x 大于 10")
} else {fmt.Println("x 不大于 10")
}
- 循环:
for i := 0; i < 5; i++ {fmt.Println(i)
}// 使用range遍历数组或切片
numbers := []int{1, 2, 3, 4, 5}
for index, value := range numbers {fmt.Printf("索引:%d, 值:%d\n", index, value)
}
函数
在Go中,函数是一等公民,你可以声明和调用函数。以下是一个示例:
// 定义一个函数,计算两个整数的和
func add(x, y int) int {return x + y
}// 调用函数
result := add(3, 5)
fmt.Println("3 + 5 =", result)
切片和数组
Go中的切片(slices)和数组(arrays)是常用的数据结构。切片是对数组的一个引用,它可以动态增长。以下是一些示例:
- 声明和初始化切片:
// 声明一个整数切片
var numbers []int// 使用make函数创建一个切片,长度为3
fruits := make([]string, 3)
fruits[0] = "apple"
fruits[1] = "banana"
fruits[2] = "cherry"
- 切片操作:
// 截取切片的一部分
subset := fruits[1:3] // 包含索引1但不包含索引3
- 动态添加元素:
// 动态添加元素到切片末尾
fruits = append(fruits, "date")
- 数组:
// 声明一个整数数组
var arr [5]int// 初始化数组
arr = [5]int{1, 2, 3, 4, 5}// 访问数组元素
value := arr[2] // 获取索引2的元素值
并发编程
Go语言内置了并发支持,允许你轻松编写并发程序。主要的概念是goroutines和channels。以下是一个简单的示例:
import "fmt"
import "time"func main() {// 启动一个goroutinego sayHello()// 主goroutinefmt.Println("主goroutine")// 等待片刻以确保goroutine有足够的时间执行time.Sleep(1 * time.Second)
}func sayHello() {fmt.Println("Hello from goroutine!")
}
学习资源
要深入学习Go语言,你可以查阅以下资源:
-
Go官方文档:官方文档包含了详细的语言规范和示例代码。
-
A Tour of Go:互动式的教程,适合初学者。
-
Go by Example:通过示例代码演示Go语言的特性。
-
Go语言圣经:《The Go Programming Language》的中文翻译版,是深入学习Go的好选择。
结语
这篇博客提供了Go语言的基础知识,帮助你入门这门强大的编程语言。要成为一个熟练的Go开发者,需要不断练习和学习,深入了解Go的各个方面。祝你在学习Go语言的过程中取得成功!如果你有任何问题或需要更多的例子,请随时向我提问。
相关文章:
Go语言入门指南
Go语言入门指南 Go语言,通常称为Golang,是一门由Google开发的开源编程语言。它因其简洁、高效和强大的特性而备受开发者欢迎。本篇博客将带你深入了解Go语言的基础知识,让你能够开始编写自己的Go程序。 为什么选择Go语言? 在学…...

【Hive SQL 每日一题】统计用户连续下单的日期区间
文章目录 测试数据需求说明需求实现 测试数据 create table test(user_id string,order_date string);INSERT INTO test(user_id, order_date) VALUES(101, 2021-09-21),(101, 2021-09-22),(101, 2021-09-23),(101, 2021-09-27),(101, 2021-09-28),(101, 2021-09-29),(101, 20…...
RabbitMQ 镜像集群部署
镜像集群原理 特征 默认情况下,队列只保存在创建该队列的节点上。而镜像模式下,创建队列的节点被称为该队列的主节点,队列还会拷贝到集群中的其它节点,也叫做该队列的镜像节点。 但是,不同队列可以在集群中的任意节…...
SpringMVC框架学习
java 学习笔记指路 基础知识 Python转java补充知识 Java中常见的名词解释 前端 【黑马程序员pink老师前端】HTML 【黑马程序员pink老师前端】JavaScript基础大总结 【黑马程序员pink老师前端】JavaScript函数与作用域 【黑马程序员pink老师前端】JavaScript对象 数据库 【黑马程…...

多通道振弦数据记录仪应用桥梁安全监测的解决方案
多通道振弦数据记录仪应用桥梁安全监测的解决方案 城市化进程的加快和交通运输的发展,桥梁作为连接城市的重要交通工具,其安全性也变得越来越重要。为了保证桥梁的安全性,需要进行定期的监测和维护。其中,多通道振弦数据记录仪是…...

RDMA 相关bug记录
对于 Client 来讲,setupConnection 中的 cm_id 应该是本地的,意味着后续 create pd \ cq \ qp 等等传入的 cm_id 都是本地 id。但是对于 Server 来讲,收到 client 的链接请求时将 client 的 cm_id 传入 setupConnection,意味着后续…...
TDengine函数大全-时序库特有函数
以下内容来自 TDengine 官方文档 及 GitHub 内容 。 以下所有示例基于 TDengine 3.1.0.3 TDengine函数大全 1.数学函数 2.字符串函数 3.转换函数 4.时间和日期函数 5.聚合函数 6.选择函数 7.时序数据库特有函数 8.系统函数 时序库特有函数 TDengine函数大全CSUMDERIVATIVEDIFF…...

vue-cli3项目本地启用https,并用mkcert生成证书
在项目根目录下的vue.config.js文件中: // vue.config.js module.exports {devServer: {host:dev.nm.cngc// 此处开启 https,并加载本地证书(否则浏览器左上角会提示不安全)https: {cert: fs.readFileSync(path.join(_dirname,./cert.crt)…...
包装类笔记
包装类 5.1 概述 Java 提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使…...
TC和TG油封有什么区别?
油封是各种机械系统(包括发动机和工业机械)中的重要部件,因为它们可以防止润滑剂和污染物的泄漏。在可用的不同类型的油封中,常用的是TC和TG密封件。在本文中,我们将讨论TC和TG油封之间的差异,帮助您了解它们的独特特性和应用。 …...

大数据之MapReduce
MapReduce概述 是一个分布式的编程框架,MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。 优点: 易于编程,简单的实现一些接口,就可以完成一…...

《机器人学一(Robotics(1))》_台大林沛群 第 5 周【机械手臂 轨迹规划】 Quiz 5
我又行了!🤣 求解的 位置 可能会有 变动,根据求得的A填写相应值即可。注意看题目。 coursera链接 文章目录 第1题 Cartesian space求解 题1-3 的 Python 代码 第2题第3题第4题 Joint space求解 题4-6 的 Python 代码 第5题第6题其它可参考代…...

嵌入式面试/笔试C相关总结
1、存储 单片机端编译后分为code ro rw zi几个区域,其中code是执行文件,ro(read only)只读区域,存放const修饰常量、字符串。rw(read write)存放已初始化变量。zi存放未初始化变量。编译完成后bin大小为coderorw。运行时所需内存为rwzi。 在电…...

支付宝使用OceanBase的历史库实践分享
为解决因业务增长引发的数据库存储空间问题,支付宝基于 OceanBase 数据库启动了历史库项目,通过历史数据归档、过期数据清理、异常数据回滚,实现了总成本降低 80%。 历史数据归档:将在线库(SSD 磁盘)数据归…...
accelerate 分布式技巧(一)
accelerate分布式技巧 简单使用 Accelerate是一个来自Hugging Face的库,它简化了将单个GPU的PyTorch代码转换为单个或多台机器上的多个GPU的代码。 Accelerate精确地抽象了与多GPU/TPU/fp16相关的模板代码,并保持Pytorch其余代码不变。 import torchim…...

密码找回安全
文章目录 密码找回安全任意秘密重置 密码找回安全 用户提交修改密码请求;账号认证:服务器发送唯一ID (例如信验证码)只有账户所有者才能看的地方,完成身份验证;身份验证:用户提交验证码完成身份验证;修改密码:用户修改密码。 任意秘密重置 登录metinfo4…...
Spring Boot + Vue的网上商城之商品管理
Spring Boot Vue的网上商城之商品管理 在网上商城中,商品管理是一个非常重要的功能。它涉及到商品的添加、编辑、删除和展示等操作。本文将介绍如何使用Spring Boot和Vue来实现一个简单的商品管理系统。 下面是一个实现Spring Boot Vue的网上商城之商品管理的思路…...
B站:提高你的词汇量:如何用英语谈论驾驶
视频链接:提高你的词汇量:如何用英语谈论驾驶_哔哩哔哩_bilibili 英文音标中文hood/hʊd/n. 汽车的引擎盖go over仔细检查;认真讨论;用心思考There are plenty of videos go over this.有很多关于这个的视频unlockvt. 发现;揭开&…...
大前端面试注意要点
前端面试:从IT专家角度全面解析 在数字时代,前端开发工程师的角色变得越来越重要。随着网站和应用程序的复杂性和交互性越来越高,对具有专业技能的前端开发人员的需求也在不断增长。对于正在寻找前端开发职位的开发者,或者正在寻…...
稻盛和夫-如是说(读书笔记)
本书解答的核心问题: “今天,我们需要的不是短期有效的处方。作为人,何谓正确?作为人,应该如何度过人生?这才是一切问题的根源。 有几个要点和认知比较深的地方谈一谈。 1、利他 类似于阳明心学࿰…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...