Go语言入门指南:基础语法和常用特性解析(上)
一、Go语言前言
Go是一种静态类型的编译语言,常常被称作是21世纪的C语言。Go语言是一个开源项目,可以免费获取编译器、库、配套工具的源代码,也是高性能服务器和应用程序的热门选择。
Go语言可以运行在类UNIX系统——比如Linux、OpenBSD、Microsoft Windows等操作系统上。
因为Go语言的特性,现很多互联网大厂公司都在使用,如字节跳动、Google、百度、美团等等。
二、Go语言特性
Go语言最主要的特性:
- 自动垃圾回收
- 更丰富的内置类型
- 函数多返回值
- 错误处理
- 匿名函数和闭包
- 类型和接口
- 并发编程
- 反射
- 语言交互性
Go语言附带了其相关的工具和标准库,拥有自动垃圾回收、一个包系统、系统调用接口等,其本身没有太多的特性,例如没有构造函数和析构函数、没有运算符重载、没有继承、没有泛型等等。但是Go语言本身是保证向后兼容的。
Go语言有足够的类型系统以避免动态语言中那些粗心的类型错误,比传统的强类型转换简洁很多。不需要程序员纠结具体类型的安全属性,在实践中提供了更多安全性和更好的运行时性能。
Go语言的标准库,提供了清晰的构建模块和公共接口,包含I/O操作、文本处理、图像、网络和分布式应用程序等,并支持许多标准化的文件格式和编解码协议。库和工具使用大量约定简化了程序逻辑,学习起来也很容易上手。不管之前你使用的是C、C++、Java、Python或者其他语言,都问题不大,因为Go语言的变量、表达式、函数等基本语法都是相似的,下来就和我一起走进Golang。
三、Go Hello World实例
Go语言的基础组成有以下几个部分:
- 包声明
- 引入包
- 函数
- 变量
- 语句&表达式
- 注释
下来让我们看一下简单的代码,输出Hello World!
package mainimport "fmt"func main() {/* 输出Hello World! */fmt.Println("Hello, World!")
}
现在就让我来为大家解析一下上述代码:
- 第一行代码 package main 定义了包名。 Go语言的代码通过包 (package) 组织,包类似于其它语言里的库(libraries)或者模块 (modules) 。一个包由位于单个目录下的一个或多个.go源代码文件组成,目录定义包的作用。每个源文件都以一条 package 声明语句开始,表示该文件属于哪个包。
main包比较特殊,表示一个可独立执行的程序,而不是库,每个 Go 应用程序都包含一个名为 main 的包。在 main 里的 main函数也很特殊,它是整个程序执行时的入口。 main 函数所做的事情就是程序做的。当然了, main 函数一般调用其它包里的函数完成很多工作,比如 fmt.PrintIn 。
-
下一行 import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。
-
下一行 func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。
-
下一行 /.../ 是注释,在程序执行时将被忽略。
-
下一行 ftm.printIn 是一个基础函数,可以打印以空格间隔的一个或多个值,并在最后添加一个换行符,从而输出一整行。(使用 fmt.Print("hello, world\n") 可以得到相同的结果)
-
当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected)。
执行Go程序
编写完Go代码如何去执行呢?
- Go是一门编译型语言,Go语言的工具链将源代码及其依赖转换成计算机的机器指令。 GO语言提供的工具都通过一个单独的命令 g 调用 , go 命令有一系列子命令。最简单的一个子命令就是run。这个命令编译一个或多个以.go结尾的源文件,链接库文件,并运行最终生成的可执行文件。

- 我们还可以使用 go build 编译程序,保存编译结果以备将来随时可以用:

这个命令生成一个名为hello的可执行的二进制文件,之后你可以随时运行它,不需任何处理。

相关文章:
Go语言入门指南:基础语法和常用特性解析(上)
一、Go语言前言 Go是一种静态类型的编译语言,常常被称作是21世纪的C语言。Go语言是一个开源项目,可以免费获取编译器、库、配套工具的源代码,也是高性能服务器和应用程序的热门选择。 Go语言可以运行在类UNIX系统——比如Linux、OpenBSD、M…...
排序算法合集
F B I W a r n i n g : \color{red}FBI \qquad Warning: FBIWarning: 本人没有完整的计算机科班的教育经历,但是一直在兢兢业业,努力学习。 这些排序函数都是自己零零散散写的,也没有经过深思熟虑和优化,纯粹是为了自娱自乐。 …...
Vue2-全局事件总线、消息的订阅与发布、TodoList的编辑功能、$nextTick、动画与过渡
🥔:高度自律即自由 更多Vue知识请点击——Vue.js VUE2-Day9 全局事件总线1、安装全局事件总线2、使用事件总线(1)接收数据(2)提供数据(3)组件销毁前最好解绑 3、TodoList中的孙传父&…...
DP读书:鲲鹏处理器 架构与编程(八)3.1鲲鹏处理器片上系统与Taishan处理器内核架构
鲲鹏处理器片上系统架构 一、鲲鹏处理器片上系统与Taishan处理器内核架构1. 鲲鹏处理器片上系统概况a. 鲲鹏处理器片上系统与鲲鹏芯片家族b. 鲲鹏920处理器片上系统的组成部件c. 鲲鹏920处理器片上系统的特征d. 鲲鹏920处理器片上系统的逻辑结构 2. Taishan V110 处理器内核微架…...
如何使用 HOOPS Exchange SDK 和 Polygonica Bridge
这里将讨论使用 HOOPS Exchange 和 Polygonica 以及它们之间的桥梁进行 CAD 访问和网格处理。--提供Crack HOOPS 全系列SDK HOOPS Exchange 基础知识 首先,让我们简单回顾一下 HOOPS Exchange。HOOPS Exchange 是一款具有 C 接口的数据访问 SDK,支持导入…...
spring异步框架使用教程
背景 在需求开发过程中,为了提升效率,很容易就会遇到需要使用多线程的场景。这个时候一般都会选择建一个线程池去专门用来进行某一类动作,这种任务到来的时候往往伴随着大量的线程被创建调用。而还有另外一种场景是整个任务的执行耗时比较长…...
【数学建模】清风数模正课3 插值算法
插值算法 在数模比赛中,很多类型的题目都需要根据已知的函数点进行数据分析和模型处理; 当此时题目所给的数据较少时,我们就无法进行准确科学的分析,所以需要更多的数据,也就是函数点; 这就需要使用数学…...
什么是eval()?eval是用来干什么的?
一、什么是eval()? eval() 是 JavaScript 中的一个全局函数,用于解析并执行传递给它的字符串作为 JavaScript 代码。 二、eval()是用来干什么的? 当调用 eval() 时,它会将传入的字符串参数视为 JavaScript 代码,并在调用位置执…...
JavaScript-console:JavaScript控制台(Console)常用方法
一、理解 console JavaScript 控制台(console)是一个开发人员在编写 JavaScript 代码时常用的工具。它是浏览器提供的一种界面,让开发人员能够追踪代码执行的状态和结果。JavaScript 控制台可以记录代码输出的信息、警告和错误,并…...
Nginx配置前后端分离
后端地址 1.本地环境 curl --request GET \--url http://localhost:8080/by-admin/captchaImage \--header Authorization: Bearer d7a035d9-b30c-4ca5-8951-8cec90607943确认后端 ip 端口 上下文 2.测试环境 部署到测试环境可能是 换成内网ip和内网服务端口(ip、端口 可能会…...
rabbitmq的发布确认
生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式, 所有在该信道上面发布的 消息都将会被指派一个唯一的 ID (从 1 开始),一旦消息被投递到所有匹配的队列之后,broker 就会发送一个确认给生产者(包含消息的唯一 ID)&…...
RISC-V公测平台发布· CoreMark测试报告
一. CoreMark简介 CoreMark是一款用于评估CPU性能的基准测试程序,它包含了多种不同的计算任务,包括浮点数、整数、缓存、内存等方面的测试。CoreMark的测试结果通常被用来作为CPU性能的参考,它可以帮助开发人员和系统管理员评估不同处理器和…...
模型微调(fine-tune)
一、关于模型微调的一些基础知识 1、模型微调(fine-tune) 微调(fine-tune)通过使用在大数据上得到的预训练好的模型来初始化自己的模型权重,从而提升精度。这就要求预训练模型质量要有保证。微调通常速度更快、精度更高。当然,自己…...
云农场种植:互联网+智慧牧场,为农业注入新的活力和创新
随着科技的不断发展,数字化农业正逐渐成为现代农业的趋势。传统农业面临着土地资源有限、劳动力不足等问题,而云农场种植模式通过数字化技术的运用,互联网养殖着重于“绿色、特色产品和智慧生态”,通过建立“线上养殖线下托养线上…...
Hadoop学习一(初识大数据)
目录 一 什么是大数据? 二 大数据特征 三 分布式计算 四 Hadoop是什么? 五 Hadoop发展及版本 六 为什么要使用Hadoop 七 Hadoop vs. RDBMS 八 Hadoop生态圈 九 Hadoop架构 一 什么是大数据? 大数据是指无法在一定时间内用常规软件工具对其内…...
linux定时备份MySQL数据库循环删除前30天的备份文件
linux定时备份MySQL数据库循环删除前30天的备份文件 一、 检查有没安装crond,如果没有,先安装 1、先检查一下有没有cron rpm -qa|grep cron如果输入上面命令有如下显示,则不需要安装 2、没有安装的话,就使用一下命令安装 yum -y install …...
不加电透明屏:在场景化应用中,有哪些特点和优点?
不加电透明屏是一种新型的显示技术,它可以在不需要电源的情况下显示图像和文字。 这种屏幕的原理是利用光的折射和反射来实现显示效果,而不需要通过电流来激发像素点。 不加电透明屏的最大优点是节能环保。传统的显示屏需要消耗大量的电能来显示图像&a…...
全球公链进展| Shibarium已上线;opBNB测试网PreContract硬分叉;Sui 主网 V1.7.1 版本
01 ETH 以太坊最新一次核心开发者执行会议:讨论 Devnet 8 更新、ElP-4788、Holesky 测试网等 以太坊核心开发者 Tim Beiko 总结最新一次以太坊核心开发者执行会议(ACDE),讨论内容包括 Devnet 8 更新、ElP-4788、Holesky 测试网、…...
CSS中的display属性有哪些值?它们的作用?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ CSS display 属性的不同取值和作用1. block2. inline3. inline-block4. none5. flex6. grid7. table、table-row、table-cell8. list-item9. inline-table、table-caption、table-column 等 ⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#x…...
ELKstack-日志收集案例
由于实验环境限制,将 filebeat 和 logstash 部署在 tomcat-server-nodeX,将 redis 和 写 ES 集群的 logstash 部署在 redis-server,将 HAproxy 和 Keepalived 部署在 tomcat-server-nodeX。将 Kibana 部署在 ES 集群主机。 环境:…...
生物信息学避坑指南:你的热图聚类总乱?可能是数据标准化和样品注释没做对
生物信息学避坑指南:热图聚类混乱的根源与系统性解决方案 热图(Heatmap)作为生物信息学中最常用的数据可视化工具之一,广泛应用于基因表达分析、代谢组学、微生物组学等领域。然而,许多初学者在使用热图进行样品聚类时…...
终极指南:RealChar语音识别技术深度对比——Whisper、Google Speech与本地部署方案
终极指南:RealChar语音识别技术深度对比——Whisper、Google Speech与本地部署方案 【免费下载链接】RealChar 🎙️🤖Create, Customize and Talk to your AI Character/Companion in Realtime (All in One Codebase!). Have a natural seaml…...
显卡接口大乱斗:VGA、DVI、HDMI、DP到底怎么选?附2023年显示器搭配指南
显卡接口终极指南:VGA、DVI、HDMI、DP的2023年实战选择策略 当你面对显示器背面那一排形状各异的接口时,是否曾感到无从下手?VGA的蓝色老将、DVI的白色宽口、HDMI的扁平设计、DP的直角造型——这些看似简单的接口背后,藏着影响画面…...
Phi-4-Reasoning-Vision开源大模型实践:图文多模态输入格式与Phi-4模型要求对齐
Phi-4-Reasoning-Vision开源大模型实践:图文多模态输入格式与Phi-4模型要求对齐 1. 项目概述 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具,专为双卡RTX 4090环境优化。该工具严格遵循官方SYSTEM…...
别再死记硬背了!用华为eNSP图解OSPF、VRRP这些协议到底怎么用
用华为eNSP图解网络协议:从抽象概念到可视化实战 网络协议学习常常陷入"理论-记忆-遗忘"的循环,OSPF的邻居状态机、VRRP的主备切换机制、STP的根桥选举过程,这些在教材中冰冷的概念,如何转化为可感知的网络行为…...
macOS歌词解决方案:LyricsX从安装到精通的全方位指南
macOS歌词解决方案:LyricsX从安装到精通的全方位指南 【免费下载链接】LyricsX 🎶 Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/ly/LyricsX 在数字音乐体验中,歌词同步显示是提升沉浸感的关键要素。然而…...
智能写作工坊:OpenClaw+Qwen3.5-9B辅助小说创作
智能写作工坊:OpenClawQwen3.5-9B辅助小说创作 1. 为什么需要AI辅助写作? 作为一个业余小说创作者,我长期面临三个核心痛点:世界观设定碎片化、人物关系维护困难和情节发展缺乏新意。传统写作软件如Scrivener虽然提供了素材管理…...
Linux文件操作命令与文件权限
1.创建一个新文件2.查看显示文件3.more命令类似 cat,不过会以一页一页的形式显示4.head命令显示文件的头部内容5.tail命令可用于查看文件的内容的后10行6.文件的压缩与解压7.tar命令用来建立8.zip命令用于压缩文件9.unzip命令用于解压缩zip文件10.文件属性...
NaViL-9B效果惊艳:复杂背景证件照文字识别+人像属性分析展示
NaViL-9B效果惊艳:复杂背景证件照文字识别人像属性分析展示 1. 模型能力概览 NaViL-9B作为原生多模态大语言模型,在证件照处理领域展现出惊人的能力。它不仅能够准确识别复杂背景下的文字信息,还能对人像属性进行智能分析,为证件…...
Stata实战:如何用Probit模型分析二分类数据(附完整代码与边际效应计算)
Stata实战:Probit模型在二分类数据分析中的完整应用指南 引言:为什么选择Probit模型? 在社会科学和经济学研究中,我们经常会遇到因变量为二分类(0/1)的情况。比如"是否购买某产品"、"是否选…...
