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

2 第一个Go程序

概述

        在上一节的内容中,我们介绍了Go的前世今生,包括:Go的诞生、发展历程、特性和应用领域。从本节开始,我们将正式学习Go语言。Go语言是一种编译型语言,也就是说,Go语言在运行之前需要先进行编译,生成可执行文件,然后才能在计算机上运行。在编写第一个Go程序之前,我们还有一些准备工作需要做:安装Go语言环境。

安装Go环境

        要开始使用Go语言,我们需要设置Go语言环境。以下是设置Go语言环境的基本步骤。

        1、下载Go语言环境安装包。可以从官方网站https://go.dev/dl/下载适用于我们操作系统的安装包,以Windows为例,可以下载go1.21.3.windows-amd64.msi安装包。

        2、双击运行go1.21.3.windows-amd64.msi安装包,默认会安装在C:\Program Files\Go目录,并会自动将Go语言安装目录中的bin文件夹添加到系统环境变量中。

        3、验证安装。在命令提示符中输入命令“go version”来验证Go语言是否安装成功,正常情况下,会显示安装的Go语言版本信息。

        完成上述步骤后,我们就可以使用Go语言和集成开发环境(IDE)来编写、编译和运行Go语言程序了。

编写第一个Go程序

        我们可以使用Visual Studio Code来编写Go程序。在Visual Studio Code中新建test.go文件,并输入以下代码。

package mainimport "fmt"// this is our first Go program
func main() {fmt.Println("Hello, CSDN")
}

        上面的Go程序由以下几个部分组成。

        包声明:每个Go程序都必须以包声明语句开始。这个程序使用package main声明了要创建的包,其中main是可执行程序的入口点。package main表示一个可独立执行的程序,每个Go程序都包含一个名为main的包。

        导入语句:导入语句用来导入需要使用的包,可以是标准库包和自定义包。这个程序使用import "fmt"导入了标准库中的fmt包,用于格式化输入输出。

        函数:Go程序可以包含一个或多个函数。这个程序包含一个main函数,它是程序的入口点。函数声明部分使用func main()声明了一个名为main的函数,该函数没有参数和返回值。main函数是每一个可执行程序所必须包含的,一般来说,它是程序启动后第一个执行的函数。

        语句和表达式:Go语言中的语句和表达式用于实现程序的流程控制和数据处理。这个程序中的fmt.Println("Hello, CSDN")语句用于输出"Hello, CSDN"。

        注释:用于向代码中添加说明和解释,以便其他开发人员更好地理解代码。单行注释是最常见的注释形式,我们可以在任何地方使用以“//”开头的单行注释。多行注释也叫块注释,一般用于包的文档描述或注释成块的代码片段。多行注释以“/*”开头,并以“*/”结尾,且不可以嵌套使用。

编译并运行程序

        打开命令提示符,并切换到上述test.go文件所在的文件夹。输入命令:go build test.go,将会编译并生成test.exe。输入命令:./test.exe,将会执行程序并输出"Hello, CSDN"。也可以直接输入命令:go run test.go,来运行程序。

        是不是觉得Go程序很简洁?接下来,我们将深入学习Go的基础语法、数据类型等更多的知识,一起Go to Learn Go!

相关文章:

2 第一个Go程序

概述 在上一节的内容中,我们介绍了Go的前世今生,包括:Go的诞生、发展历程、特性和应用领域。从本节开始,我们将正式学习Go语言。Go语言是一种编译型语言,也就是说,Go语言在运行之前需要先进行编译&#xff…...

Leetcode—2678.老人的数目【简单】

2023每日刷题&#xff08;八&#xff09; Leetcode—2678.老人的数目 int countSeniors(char ** details, int detailsSize){ int ans 0; int i; int tens 0; int ones 0; for(i 0; i < detailsSize; i) { tens ((details i) 11) - ‘0’; ones ((details i) 12)…...

解决 /bin/bash^M: bad interpreter: No such file or directory

问题描述 linux 系统中知行*.sh 文件报/bin/bash^M: bad interpreter: No such file or directory 原因&#xff1a; .sh文件是在windows系统编写的&#xff0c;在linux执行就有问题 解决过程 转化下格式执行如下命令 # dos2unix app.sh 结果bash: dos2unix: command not …...

Spring Cloud之服务注册与发现(Eureka)

目录 Eureka 介绍 角色 实现流程 单机构建 注册中心 服务提供者 服务消费者 集群搭建 注册中心 服务提供者 自我保护机制 原理分析 Eureka 介绍 Eureka是spring cloud中的一个负责服务注册与发现的组件&#xff0c;本身是基于REST的服务&#xff0c;同时还提供了…...

Rust-后端服务调试入坑记

这篇文章收录于Rust 实战专栏。这个专栏中的相关代码来自于我开发的笔记系统。它启动于是2023年的9月14日。相关技术栈目前包括&#xff1a;Rust&#xff0c;Javascript。关注我&#xff0c;我会通过这个项目的开发给大家带来相关实战技术的分享。 如果你关注过我的Rust 实战里…...

Flask四种配置方式

Flask是一个轻量级的Python Web框架&#xff0c;被广泛应用于Web开发中。Flask提供了多种配置方式&#xff0c;可以根据不同的需求和场景进行选择。本篇博客将介绍Flask的几种配置方式&#xff0c;并提供相关代码示例。 Flask应用程序的配置对象 在Flask中&#xff0c;应用程序…...

基于nodejs+vue备忘记账系统mysql

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…...

使用Vscode创建一个C_Hello程序

Vscode用来学习C语言语法确实很方便。问题是安装好了&#xff0c;不会用&#xff0c;或编译失败&#xff0c;也是常有的事情&#xff0c;其中一个原因就是不会创建工作区。下面介绍使用Vscode创建一个C语言工作区。有时候看着很简单&#xff0c;时间久了&#xff0c;我竟然忘记…...

【31】c++设计模式——>模板方法模式

模板方法模式通常由以下几个部分组成&#xff1a; 1.抽象基类&#xff08;Abstract Base Class&#xff09;&#xff1a;抽象基类定义了一个算法的骨架&#xff0c;其中包含了模板方法和一些基本操作方法。模板方法在抽象基类中被声明为虚函数&#xff0c;它定义了算法的流程&…...

docker和K8S环境xxl-job定时任务不执行问题总结

文章目录 xxl-job 任务调度原理1 问题1 时区导致的任务没有执行的问题解决方案 2 执行器注册和下线导致的问题&#xff08;IP问题&#xff09;解决方案 3 问题3 调度成功&#xff0c;但是执行器的定时任务未执行4 问题4 数据库性能问题&#xff0c;导致查询任务和操作日志数据卡…...

【Leetcode】218.天际线问题(Hard)

一、题目 1、题目描述 城市的 天际线 是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度,请返回 由这些建筑物形成的 天际线 。 每个建筑物的几何信息由数组 buildings 表示,其中三元组 buildings[i] = [lefti, righti, heighti] 表示: l…...

try catch finally代码块的作用

try-catch-finally 代码块是用于处理程序中可能发生的异常情况的一种结构。它的作用在于&#xff1a; try 代码块中的代码用于包含可能会引发异常的代码。catch 代码块用于捕获并处理 try 代码块中抛出的异常。可以通过 catch 代码块中的逻辑来处理异常&#xff0c;如打印错误…...

【Sentinel】Sentinel簇点链路的形成

说明 一切节点的跟是 machine-root&#xff0c;同一个资源在不同链路会创建多个DefaultNode&#xff0c;但是在全局只会创建一个 ClusterNode machine-root/\/ \EntranceNode1 EntranceNode2/ \/ \DefaultNode(nodeA) DefaultNode(nodeA)|…...

Elasticsearch之mapping

文章目录 以显式的方式创建一个映射查看某个具体索引的mapping定义向已存在的映射中添加一个新的属性查看映射中指定字段的定义信息更新已存在映射的某个字段 1、 官方文档地址 2、 字段类型 1、定义&#xff1a;映射是定义文档及其包含的字段如何存储和索引的过程。 2、每个…...

6、PostgreSQL 数据类型之一:数字类型和货币类型

PostgreSQL 作为一个强大的开源关系型数据库管理系统&#xff0c;本身支持多种数据类型&#xff0c;包括标准 SQL 数据类型以及一些扩展数据类型。 PostgreSQL 支持多种数据类型的设计理念是为了满足不同应用场景的需求&#xff0c;提供更大的灵活性和数据处理能力。原因如下&…...

计算机视觉与深度学习 | 基于点线融合的视觉惯性SLAM前端

===================================================== github:[https://github.com/MichaelBeechan] CSDN:[https://blog.csdn.net/u011344545] ===================================================== 引言 本文中将介绍视觉惯性SLAM的前端部分,首先是传感器数据处理…...

MDK与keilC51共存的方法

MDK与keilC51共存的方法 在网上搜的资料MDK与KeilC51安装顺序都搞反了&#xff0c;而且大家都没成功过&#xff0c;反倒是转发了很多错误的教程。 用此安装方法解决了MDK与KeilC51的共存问题。所有功能完美运行。 因为MDK功能比KeilC51多&#xff0c;所以要先安装KeilC51 1、先…...

c_指针

文章目录 *(p1)1表示第 1 行第 1 个元素的地址。如何理解呢&#xff1f;下标运算符的规则括号 int a; // 1.一个整数 int *a; // 2.一个指向整数的指针 int **a; // 3.一个指向指针的指针, 它所指向的指针又指向一个整数型数据 ;一个指向 …...

循环队列c语言版

一、循环队列结构体 typedef int QueueDataType; #define CQ_MAX_SIZE 10typedef struct CircularQueue {QueueDataType data[CQ_MAX_SIZE];/**标记队列首*/QueueDataType head;/**标记队列尾部*/QueueDataType rear;} CircularQueue; 二、循环队列操作函数声明 /**创建队…...

SprringMVC拦截器

1、拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行 SpringMVC中的拦截器需要实现HandlerInterceptor SpringMVC的拦截器必须在SpringMVC的配置文件中进行配置&#xff1a; <bean class"com.test.interceptor.FirstInterceptor"></bean> …...

DeepSeek 架构深度解析:从原理到实践的完整指南

引言&#xff1a;重新定义大模型效率的国产之光2024年12月&#xff0c;DeepSeek-V3的技术报告正式发布&#xff0c;迅速在AI社区引发轰动。这款拥有671B总参数的混合专家模型&#xff0c;以仅557万美元的训练成本——不到GPT-4传闻训练成本的1/10——实现了与GPT-4o和Claude-3.…...

终极指南:3分钟零代码实现专业音频分离的完整教程

终极指南&#xff1a;3分钟零代码实现专业音频分离的完整教程 【免费下载链接】demucs Code for the paper Hybrid Spectrogram and Waveform Source Separation 项目地址: https://gitcode.com/gh_mirrors/de/demucs 你是否曾经想要从一首歌曲中提取纯净的人声&#xf…...

GetQzonehistory完整指南:3分钟学会备份QQ空间所有说说

GetQzonehistory完整指南&#xff1a;3分钟学会备份QQ空间所有说说 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 想要永久保存QQ空间里的青春回忆吗&#xff1f;GetQzonehistory是一款…...

3个技巧教你玩转Dify工作流:从新手到高手的完整指南

3个技巧教你玩转Dify工作流&#xff1a;从新手到高手的完整指南 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程&#xff0c;自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Dify-Wo…...

相控阵雷达技术解析:从THAAD到5G应用

1. 萨德系统概述&#xff1a;现代反导防御的核心力量THAAD&#xff08;Terminal High Altitude Area Defense&#xff09;系统是美国陆军研发的末端高空区域防御系统&#xff0c;专门用于拦截处于末段飞行阶段的短程和中程弹道导弹。这套系统自2008年部署以来&#xff0c;已成为…...

让任意窗口保持置顶:AlwaysOnTop提升Windows多任务效率全指南

让任意窗口保持置顶&#xff1a;AlwaysOnTop提升Windows多任务效率全指南 【免费下载链接】AlwaysOnTop Make a Windows application always run on top 项目地址: https://gitcode.com/gh_mirrors/al/AlwaysOnTop 在数字化工作环境中&#xff0c;我们经常需要同时处理多…...

SEO 培训 PPT 中如何设计生动有趣的课件

SEO 培训 PPT 中如何设计生动有趣的课件 在现代教育和培训领域&#xff0c;PPT 作为一种重要的教学工具&#xff0c;已经成为无法被忽视的存在。特别是在 SEO 培训中&#xff0c;一个生动有趣的课件不仅能够提高学员的参与度&#xff0c;还能帮助他们更好地理解和掌握复杂的 S…...

Nanbeige 4.1-3B 在AI Agent场景的应用:自主任务规划与执行

Nanbeige 4.1-3B 在AI Agent场景的应用&#xff1a;自主任务规划与执行 最近和几个做项目管理的朋友聊天&#xff0c;他们都在抱怨一件事&#xff1a;每周整理项目文档和写周报&#xff0c;简直是“体力活”。从各个文件夹里翻找文件&#xff0c;手动汇总信息&#xff0c;再绞…...

SetDPI:Windows多显示器DPI缩放终极解决方案

SetDPI&#xff1a;Windows多显示器DPI缩放终极解决方案 【免费下载链接】SetDPI 项目地址: https://gitcode.com/gh_mirrors/se/SetDPI 关键词&#xff1a;Windows DPI缩放&#xff0c;多显示器显示设置&#xff0c;DPI精准控制&#xff0c;显示器缩放工具&#xff0c…...

基于springboot车辆管理系统设计与实现.7z(源码+论文)

[点击下载链接》》》] 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了车辆管理系统的开发全过程。通过分析车辆管理系统管理的不足&#xff0c;创建了一个计算机管理车辆管理系统的方案。文章介绍了车辆管理系统的…...