15分钟学Go 第3天:编写第一个Go程序

第3天:编写第一个Go程序

1. 引言

在学习Go语言的过程中,第一个程序通常是“Hello, World!”。这个经典的程序不仅教会你如何编写代码,还引导你理解Go语言的基本语法和结构。本节将详细介绍如何编写、运行并理解第一个Go程序,通过实例和图示帮助你掌握这一过程。

2. 创建工作目录

2.1 设置工作空间

在之前的步骤中,我们已设置好Go语言的环境。现在,让我们在GOPATH下创建一个新的工作目录。

  1. 打开命令提示符(cmd)。
  2. 创建新的项目目录
    mkdir %GOPATH%\src\hello
    

2.2 进入目录

接下来,进入新创建的hello目录:

cd %GOPATH%\src\hello

3. 编写第一个Go程序

3.1 创建文件

hello目录下创建一个名为main.go的文件。这个文件将包含我们的第一个Go程序。

3.2 编写代码

main.go文件中,输入以下代码:

package mainimport "fmt"func main() {fmt.Println("Hello, World!")
}

3.3 代码解释

让我们逐行分析这段代码:

  • package main:指定该文件属于main包。Go程序的入口点必须在main包中。
  • import "fmt":导入fmt包,提供格式化输出的功能。
  • func main() {...}:定义main函数,程序的入口点。
  • fmt.Println("Hello, World!"):使用Println函数打印文本到标准输出。

4. 运行第一个Go程序

4.1 使用命令行运行

  1. 在命令提示符中,确保你已经在hello目录。
  2. 输入以下命令运行程序:
go run main.go

4.2 预期输出

执行后,你应该看到以下输出:

Hello, World!

4.3 使用VS Code运行

如果你在VS Code中工作,可以直接运行代码。

  1. 打开VS Code,在左侧文件浏览器中找到并打开main.go
  2. 使用快捷键Ctrl + F5或点击“运行”按钮。

5. 代码运行流程图

下面是Hello, World!程序的运行流程图:

+-----------------+
|     程序启动     |
+-----------------+|v
+-----------------+
|   导入fmt包      |
+-----------------+|v
+-----------------+
|   程序执行main   |
+-----------------+|v
+-----------------+
|  输出"Hello,    |
|      World!"     |
+-----------------+|v
+-----------------+
|     程序结束     |
+-----------------+

6. 进一步理解Go语言基本概念

6.1 Go语言的基本语法

  • 包(package):Go的源文件必须属于某个包,main是特殊的包,表示可执行程序。
  • 导入(import):使用import语句导入需要的标准库或自定义库。
  • 函数(function)func关键字用来定义函数;main函数是程序的入口。

6.2 数据类型与变量

Go是一种静态类型语言,变量的类型在编译时确定。我们将在后续学习中深入探讨这些概念,但可以简单介绍一下如何声明变量:

var name string = "Alice"
var age int = 25

6.3 注释

在Go语言中,有两种注释方式:

  • 单行注释:使用//
  • 多行注释:使用/* ... */
// 这是一个单行注释/* 这是一个
多行注释 */

7. 练习和挑战

7.1 修改代码

尝试将打印的内容从“Hello, World!”修改为你的名字,例如:

fmt.Println("Hello, [你的名字]!")

7.2 打印其他信息

扩展程序,打印当前的日期和时间。你可以使用time包,例如:

import ("fmt""time"
)func main() {fmt.Println("Hello, World!")fmt.Println("Current time:", time.Now())
}

7.3 进行测试

运行修改后的程序,检查输出是否正确。

8. 常见问题与解决方案

8.1 问题1:程序运行无输出或报错

如果在运行程序时没有输出或出现报错,确保以下几点:

  • 确保代码无误,语法正确。
  • 检查是否在正确的目录下执行命令。

8.2 问题2:IDE无法识别Go命令

如果VS Code未能识别go命令:

  • 确保已正确定义GOROOTGOPATH环境变量。
  • 拖动VS Code重新启动。

9. 总结

在本节中,我们成功编写并运行了第一个Go程序“Hello, World!”。通过这一实例,你不仅学会了基本的Go语言结构与语法,还通过实例代码及运行流程图理解了程序的工作方式。接下来,你可以继续深入学习Go语言的其他特性和构造,为更复杂的编程任务做好准备。


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

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

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

相关文章

[旧日谈]关于Qt的刷新事件频率,以及我们在Qt的框架上做实时的绘制操作时我们该关心什么。

[旧日谈]关于Qt的刷新事件频率,以及我们在Qt的框架上做实时的绘制操作时我们该关心什么。 最近在开发的时候,发现一个依赖事件来刷新渲染的控件会导致程序很容易异常和崩溃。 当程序在运行的时候,其实软件本身的负载并不高,所以…

小新学习Docker之Docker--harbor私有仓库部署与管理

目录 一、Harbor简介 1.1、Harbor概述 1.2、Harbor的特性 1.3、Harbor的构成 二、Harbor构建Docker私有仓库 2.1、部署Harbor服务 2.2、启动 Harbor 2.3、查看 Harbor 启动镜像,检查harbor是否安装成功 2.4、创建一个新项目 2.5、非本地主机进行下载镜像 …

爬虫逆向学习(十二):一个案例入门补环境

此分享只用于学习用途,不作商业用途,若有冒犯,请联系处理 反爬前置信息 站点:aHR0cDovLzEyMC4yMTEuMTExLjIwNjo4MDkwL3hqendkdC94anp3ZHQvcGFnZXMvaW5mby9wb2xpY3k 接口:/xjzwdt/rest/xmzInfoDeliveryRest/getInfoDe…

宁德时代25届校招入职Verify测评大揭秘::数字推理25分钟+言语推理19分钟SHL题库

非常感谢您对宁德时代的关注。祝贺您通过宁德时代校园招聘的专业面试环节,现邀请您参与完成以下测评。本轮共两份测评,每份测评对您的最终结果都非常重要,请务必在收到测评后48小时内完成!具体如下:A. 登录信息: 测评包含语言理解数字推理两…

前缀和算法——优选算法

个人主页:敲上瘾-CSDN博客 个人专栏:游戏、数据结构、c语言基础、c学习、算法 一、什么是前缀和? 前缀和是指从数组的起始位置到某一位置(或矩阵的某个区域)的所有元素的和。这种算法通过预处理数组或矩阵,…

【日志】编辑器开发——修复根据Excel表格数据生成Json文件和配置表代码报错

2024.10.15 又是蕉绿且摆烂的一天,不仅需要克制网瘾,还要努力学习,不然真的会被抛弃啊。但是我还是不想卷,给我的时间大概还有半年,突然好奇半年时间到底能学点什么或者做点什么。 【力扣刷题】 暂无 【数据结构】 …

Python入门笔记(七)

文章目录 第十五章. 下载数据15.1 csv文件15.2 json文件 第十六章. 使用API16.1 requests 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转:人工智能从入门到精通教程 本文电子版获取…

C++初阶学习第七弹——string的模拟实现

C初阶学习第六弹------标准库中的string类_c语言返回string-CSDN博客 通过上篇我们已经学习到了string类的基本使用,这里我们就试着模拟实现一些,我们主要实现一些常用到的函数。 目录 一、string类的构造 二、string类的拷贝构造 三、string类的析构函…

请求的响应----状态码分为五大类(爬虫)

前言 一个爬虫的成功与否,在于你是否拿到了想要的数据;一个请求的成功与否,在于响应的状态码,它标明了当前请求下这个响应的结果,是好还是坏。上节课程学习了HTTPS和HTTP协议的各自优势,本节课程进入到请求…

《Linux从小白到高手》综合应用篇:详解Linux系统调优之服务器硬件优化

List item 本篇介绍Linux服务器硬件调优。硬件调优主要包括CPU、内存、磁盘、网络等关键硬件组。 1. CPU优化 选择适合的CPU: –根据应用需求选择多核、高频的CPU,以满足高并发和计算密集型任务的需求。CPU缓存优化: –确保CPU缓存&#x…

前端学习-css的元素显示模式(十五)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 什么是元素显示模式 块元素 常见的块元素 块元素的特点 注意 行内元素 行内元素的特点 注意 行内块元素 行内块元素的特点 元素显示模式的转换 语法格…

SpringBoot高校学科竞赛平台:性能优化与实践

3系统分析 3.1可行性分析 通过对本高校学科竞赛平台实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本高校学科竞赛平台采用SSM框架,JAVA作为开发语…

Caffeine Cache解析(一):接口设计与TinyLFU

Caffeine is a high performance Java caching library providing a near optimal hit rate. 自动加载value, 支持异步加载基于size的eviction:frequency and recency基于时间的过期策略:last access or last write异步更新valuekey支持weak referenceva…

探索brpc:特性、使用场景与同步异步调用与封装示例

文章目录 前言特性使用场景brpc && grpc 对比 相关类与接口日志输出类与接口protobuf类与接口服务端类与接口客户端类与接口 使用同步调用 & 异步调用 封装封装思想代码 前言 brpc 是用 c语言编写的工业级 RPC 框架,常用于搜索、存储、机器学习、广告、…

Ansible自动化工具

一、Ansible概述 1.1 什么是Ansible Ansible 是一个开源的自动化工具,用于配置管理、应用程序部署和任务自动化。它让你可以通过编写简单的 YAML 文件(剧本,Playbooks),轻松管理和配置多个服务器。Ansible 的特点是无…

4.redis通用命令

文章目录 1.使用官网文档2.redis通用命令2.1set2.2get2.3.redis全局命令2.3.1 keys 2.4 exists2.5 del(delete)2.6 expire - (失效时间)2.7 ttl - 过期时间2.7.1 redis中key的过期策略2.7.2redis定时器的实现原理 2.8 type2.9 object 3.生产环境4.常用的数据结构4.1认识数据类型…

【C++进阶】哈希表的介绍及实现

【C进阶】哈希表的介绍及实现 🥕个人主页:开敲🍉 🔥所属专栏:C🥭 🌼文章目录🌼 1. 哈希的概念 1.1 直接定址法 1.2 哈希冲突 1.3 负载因子 1.4 将关键字转为整数 2. 哈希函数 2.1 …

mqtt学习

简介: MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅模式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中…

Android 未来可能支持 Linux 应用,Linux 终端可能登陆 Android 平台

近日,根据 android authority 的消息,Google 正在开发适用于 Android 的 Linux 终端应用,而终端应用可以通过开发人员选项启用,并将 Debian 安装在虚拟机中。 在几周前,Google 的工程师开始为 Android 开发新的 Termi…

推荐一个可以免费上传PDF产品图册的网站

​在数字化时代,企业将产品图册以PDF格式上传至网络,不仅便于客户浏览和下载,还能提升企业的专业形象。今天,就为您推荐一个可以免费上传PDF产品图册的网站——FLBOOK,轻松实现产品图册的在线展示。 1.注册登录&#x…