【Go 基础篇】Go语言初探:第一段代码与执行过程解析

介绍

Go语言(也称为Golang)作为一门现代化的编程语言,以其简洁的语法、高效的性能和丰富的标准库而受到了广泛关注和使用。对于初学者来说,编写和执行第一段Go代码是迈向这门语言的重要一步。本篇博客将带您深入了解Go语言的第一段代码,同时分析其执行过程,并介绍一些语法注意事项,帮助您对Go语言的基础特性有更清晰的认识。

第一段Go代码:Hello, World!

在学习一门新的编程语言时,通常第一个程序会是经典的“Hello, World!”。这个简单的程序输出了一条问候语,是学习编程的入门之作。让我们来看看如何用Go语言编写并执行这个经典的程序。

以下是一个简单的Go程序,展示了如何输出“Hello, World!”:

package main

import "fmt"

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

代码解析

让我们一步一步分析上述的代码:

  1. package main:Go程序的入口必须位于main包中。这一行代码告诉编译器这是一个可执行的程序,而不是一个库或模块。

  2. import "fmt"import语句用于导入所需的包。在这个例子中,我们导入了fmt包,它提供了格式化输出和输入的函数。

  3. func main()main函数是每个Go程序的入口点,它会被自动调用。在这个例子中,我们定义了一个名为main的函数。

  4. fmt.Println("Hello, World!"):这一行代码使用fmt包中的Println函数输出一条消息。Println函数会在控制台输出指定的内容,并在最后自动换行。

执行过程分析

当我们编写了这个“Hello, World!”程序后,接下来就是执行它。Go语言的执行过程可以简要分为以下几个步骤:

  1. 源代码:我们编写的Go程序即为源代码,它通常保存在一个以.go为后缀的文件中。在本例中,我们将代码保存为hello.go

  2. 编译:使用Go编译器(go build命令),我们将源代码转换为机器代码。这个过程会生成一个可执行文件,文件名与程序中的package main中的包名一致。对于本例,可执行文件名将是hello

  3. 执行:一旦编译完成,我们就可以在命令行中执行生成的可执行文件。在终端中输入./hello(或hello.exe,根据操作系统不同),即可运行程序。

  4. 输出结果:程序开始执行后,main函数被调用。在这个例子中,main函数中的fmt.Println("Hello, World!")会将“Hello, World!”输出到控制台。

请添加图片描述

语法注意事项

在编写和执行Go语言程序时,有一些语法注意事项需要特别关注:

  1. 大小写敏感:Go语言是大小写敏感的,因此mainMain被视为不同的标识符。请确保大小写一致,以避免错误。

  2. 导入包名缩写:Go语言的import语句可以使用包名的缩写,例如import "fmt"。尽管这样可以减少输入,但请注意不要因为缩写而使代码难以理解。

  3. 语句结束符:Go语言不要求使用分号作为语句的结束符。编译器会根据换行自动判断语句的结束。

  4. 代码缩进:Go语言强制使用代码块的缩进,以确保代码的可读性。代码块通常使用一个制表符或四个空格进行缩进。

运行实例

让我们在终端中依次输入以下命令,来运行我们的“Hello, World!”程序:

# 编译程序,生成可执行文件
go build hello.go

# 执行可执行文件
./hello

您将在终端中看到以下输出:

Hello, World!

这就是您的第一个Go程序成功执行并输出的结果!

总结

第一段Go代码不仅是学习一门新编程语言的开始,也是熟悉语言的基础特性和工作流程的重要一步。本篇博客详细介绍了“Hello, World!”程序的编写和执行过程,通过分析代码,您可以对Go语言的基本语法、包导入、函数定义和执行过程有更清晰的认识。同时,我们也介绍了一些语法注意事项,帮助您在编写Go代码时避免常见的错误。希望通过本文,您能够轻松理解和编写Go语言的第一段代码,并为未来的学习和开发打下坚实的基础。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

来讲一讲面试必问的异步FIFO设计!

异步FIFO设计可以说是数字IC设计工程师面试时必问的一个问题了,也是我们经常使用但是又往往被忽略的一个东西,今天就展开详细说一说不同深度(2^N或者非2^N)异步FIFO的设计思想; 一:2^N深度异步FIFO设计 1…

git和github学习

一、什么是git和github? 二、学会使用github desktop应用程序 初始使用: 一开始我们是新账户,里面是没有仓库的,需要手动创建一个仓库。此时,这个仓库是创建在本地仓库里面,需要用到push命令(就是那个pub…

现代C++中的从头开始深度学习【2/8】:张量编程

一、说明 初学者文本:此文本需要入门级编程背景和对机器学习的基本了解。张量是在深度学习算法中表示数据的主要方式。它们广泛用于在算法执行期间实现输入、输出、参数和内部状态。 在这个故事中,我们将学习如何使用特征张量 API 来开发我们的C算法。具…

Android Studio实现简单ListView

效果图 MainActivity package com.example.listviewtest;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.widget.ListView;import com.example.listviewtest.adapter.PartAdapter; import com.example.listviewtest.bean.PartB…

【Spring Cloud 六】Hystrix熔断

这里写目录标题 系列文章目录背景一、Hystrix是什么服务雪崩服务容错的相关概念熔断器降级超时控制限流 二、会什么要有Hystrix三、如何使用Hystrix进行熔断处理整体项目代码服务提供者pom文件yml配置文件启动类controller 服务消费者pom文件yml配置文件启动类feignhystrixcont…

网络安全(黑客)零基础入门

导语 什么是 Web 安全?我又该如何入门学习它呢?学习过程中又应注意哪些问题呢?... 或许你的心中有着这样的疑问、不过别着急,本文会为你一一解答这些问题。 正文 定义 Web 安全,顾名思义便是由保障 Web 应用能够持续…

Windows新版文件资源管理器经常在后台弹出的临时解决方案

禁用组策略自动刷新 运行gpedit.msc找到计算机配置->管理模板->系统->组策略找到 “关闭组策略的后台刷新”启用 参考 https://answers.microsoft.com/en-us/windows/forum/all/windows-11-most-recently-opened-explorer-window/26e097bd-1eba-4462-99bd-61597b5…

【计算机网络】socket编程

文章目录 1. 网络通信的理解2.进程PID可以取代端口号吗?3. 认识TCP协议4. 认识 UDP协议5. socket编程接口udp_server.hpp的代码解析socket——创建 socket 文件描述符Initserver——初始化1.创建套接字接口,打开网络文件bind——绑定的使用 2.给服务器指…

鸿蒙智联再出发,携手伙伴共赢空间智能化,创造无限可能

新空间,再出发,HarmonyOS Connect伙伴峰会完 2023年8月5日,HarmonyOS Connect伙伴峰会在东莞如期举办,峰会以《一起创造无限可能 新空间 再出发》为主题,深度解读了鸿蒙智联商业模式全面升级以来,给伙伴带来…

Qt拖放事件与拖放操作笔记dragEnterEvent,dropEvent

1 介绍 拖放事件主要用于处理MIME数据,该数据是用于在发送电子邮件时,附加多媒体数据(即拖拽一个文件放入邮件中,事件文件的上传)。 2 示例 a)使用简化步骤声明拖放事件成员函数: b)…

C#与C/C++交互(1)——需要了解的基础知识

【前言】 C#中用于实现调用C/C的方案是P/Invoke(Platform Invoke),让托管代码可以调用库中的函数。类似的功能,JAVA中叫JNI,Python中叫Ctypes。 常见的代码用法如下: [DllImport("Test.dll", E…

IPv6地址分类,EUI-64转换规则

1、可聚合的单全球单播地址Global Unique Address: Aggregate global unicast address,前3位是001,即2000::/3,目前IANA已经将一部分可聚合全球单播进行了专门使用,如:2001::/16用于IPV6互联网,…

流量分析日志查看

一流量分析 buuctf wireshark 从题目出发,既然是上传登录信息,就直接过滤post请求,即搜索 http.request.methodPOST,因为上传用户登录信息使用的一定是http里的post方法 模式过滤 http.request.method “GET” http.request.…

无涯教程-Perl - getpriority函数

描述 此函数返回进程(PRIO_PROCESS),进程组(PRIO_PGRP)或用户(PRIO_USER)的当前优先级。 参数WHICH指定要为PRIO_PROCESS,PRIO_PGRP或PRIO_USER之一设置优先级的实体,WHO是要设置的进程ID或用户ID。 WHO的值为0定义了当前流程,流程组或用户。这会在不支持系统getpriority()函…

Springboot后端通过路径映射获取本机图片资源

项目场景: 项目中对图片的处理与查看是必不可少的,本文将讲解如何通过项目路径来获取到本机电脑的图片资源 如图所示,在我的本机D盘的图片测试文件夹(文件夹名字不要有中文)下有一些图片, 我们要在浏览器上访问到这些图片&#…

RISC-V基础之函数调用(二)栈与寄存器(包含实例)

堆栈是一种后进先出(LIFO)的队列,用于存储函数调用时的临时数据和现场数据。堆栈指针sp(寄存器2)是一个普通的RISC-V寄存器,按照惯例,指向堆栈的顶部。堆栈从高地址向低地址增长,即当…

【UE4 RTS】04-Camera Pan

前言 本篇实现了CameraPawn的旋转功能。 效果 步骤 1. 打开项目设置,添加两个操作映射 2. 打开玩家控制器“RTS_PlayerController_BP”,新建一个浮点型变量,命名为“PanSpeed” 在事件图表中添加如下节点 此时运行游戏可以发现当鼠标移动…

WEB集群——负载均衡集群

目录 一、 LVS-DR 群集。 1、LVS-DR工作原理 2、LVS-DR模式的特点 3、部署LVS-DR集群 3.1 配置负载调度器(192.168.186.100) 3.2 第一台web节点服务器(192.168.186.103) 3.3 第二台web节点服务器(192.168.186.…

Q-Vision+Kvaser CAN/CAN FD/LIN总线解决方案

智能联网技术在国内的发展势头迅猛,随着汽车智能化、网联化发展大潮的到来,智能网联汽车逐步成为汽车发展的主要趋势。越来越多整车厂诉求,希望可以提供本土的测量软件,特别是关于ADAS测试。而Softing中国推出的Q-Vision软件不仅可…

f12 CSS网页调试_css样式被划了黑线怎么办

我的问题是这样的 class加上去了,但是样式不生效,此时可能是样式被其他样式覆盖了, 解决方案就是 给颜色后边添加一个!important