【golang学习之旅】Go程序快速开始 Go程序开发的基本注意事项

系列文章

【golang学习之旅】使用VScode安装配置Go开发环境
【golang学习之旅】报错:a declared but not used
【golang学习之旅】Go 的基本数据类型
【golang学习之旅】深入理解字符串string数据类型
【golang学习之旅】go mod tidy
【golang学习之旅】记录一次 panic case : reflect: reflect.Value.SetInt using unaddressable value
【golang学习之旅】记录一次 error case : full error output: cc1: error: unrecognized command line option


目录

  • 系列文章
  • 快速开始
    • Hello World
    • 代码解释
    • 编译和运行
  • Go程序开发的注意事项


快速开始

Hello World

先在本地创建一个目录,用来放我们后面的练习代码:

在这里插入图片描述

打开VScode,点击下面绿框里的按键来打开我们上面创建的目录
在这里插入图片描述

然后在这个目录下创建一个main目录,main目录下创建一个以.go为后缀的文件,名为hello_world.go

在这里插入图片描述

在文件里写入下面的代码:

package main

import "fmt"

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

打开VScode的terminal,进入到go文件所在的目录下

在这里插入图片描述

然后使用go build命令对该go文件进行编译,如果编译成功则在该目录下生成 一个同名的.exe文件(Windows)

在这里插入图片描述

然后执行该exe文件

在这里插入图片描述


代码解释

我们来解读这个代码

package main

import "fmt"

func main() {
	fmt.Println("Hello World")
}
  • package main

    • Go 语言的代码通过(package)组织,包类似于其它语言里的库(libraries)或者模块(modules)。一个包由位于单个目录下的一个或多个 .go 源代码文件组成,目录定义包的作用
    • 每个源文件都以一条 package 声明语句开始,这个例子里就是 package main,表示该文件属于哪个包
  • import "fmt"

    • 导包。包名一般都是小写
  • func main() {}

    • func关键字定义了一个函数,函数名为main
    • 一个函数的声明由 func 关键字、函数名、参数列表、返回值列表(这个例子里的 main 函数参数列表和返回值都是空的)以及包含在大括号里的函数体组成
    • main 函数是整个程序执行时的入口
  • fmt.Println("Hello World")

    • Println是fmt包里的一个基础函数,可以打印以空格间隔的一个或多个值,并在最后添加一个换行符,从而输出一整行
    • Go语言严格区分大小写。若一个包的函数要被其他包里的代码调用,那么这个函数名需要首字母大写
    • 在使用其他包的函数时,一般都是 包名.函数名 的格式

编译和运行

上面的方法是先编译再运行,实际上可以直接使用go run命令直接编译运行,但这种方式不会在目录下生成exe可执行文件

而可执行文件可以在没有Go开发环境的机器上运行

在这里插入图片描述

注意:

  • go build可以指定可执行文件的文件名(在Windows系统中必须以.exe为后缀):go build -o hello.exe

  • 如果程序有错误,在编译时会在错误的那行报错


Go程序开发的注意事项

  1. Go源文件以 “go”为扩展名

  2. Go程序的执行入口是main()函数

  3. Go语言严格区分大小写

  4. Go方法是由一条条语句构成,每个语句后不需要分号,因为Go的编译器会主动把特定符号后的换行符转换为分号

  5. Go编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多条语句卸载同一行,否则报错

  6. Go程序中定义的变量或者import的包如果没有使用到,代码不能编译通过,IDE也会报红提示

    在这里插入图片描述

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

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

相关文章

linux配置Vnc Server给Windows连接

1. linux 安装必要vnc server和桌面组件 sudo apt -y install tightvncserversudo apt install xfce4 xfce4-goodies2. linux 配置vncserver密码 #bash vncserver参考: https://cn.linux-console.net/?p21846#google_vignette 3. 将启动桌面命令写入.vnc/xstartup # .vnc/x…

了解指标体系1:指标是大数据开发中的关键要素

在大数据开发的过程中,指标体系是一个至关重要的概念。本文将介绍什么是指标,为什么它们如此重要,以及如何在大数据项目中有效地构建和应用指标体系。 目录 什么是指标?指标的类型为什么指标如此重要?如何构建有效的指…

2024最新自动化测试 —— Jest 测试框架应用

什么是自动化测试 在软件测试中,自动化测试指的是使用独立于待测软件的其他软件来自动执行测试、比较实际结果与预期并生成测试报告这一过程。在测试流程已经确定后,测试自动化可以自动执行的一些重复但必要的测试工作。也可以完成手动测试几乎不可能完…

xcode和iPhone真机或者watch真机连接问题

1.如果真机是第一次连接xocde,就需要开启真机上的开发者模式,开启开发者模式的方式: iphone/ipad开启方式: 设置 > 隐私与安全 > 开发者模式 > 开启,然后重启就可以了 watch设置:很麻烦,看文章…

对身外之物,不必在意

不管对待自己还是他人,外在的条件不值得挂怀,人在不得已颠沛流离时期,吃不好、穿不好,都应该从容接受。

外汇天眼:盈透证券为客户提供更丰富的欧洲衍生品交易渠道

电子交易巨头盈透证券(纳斯达克代码:IBKR)今日宣布,通过Cboe欧洲期权交易所(CEDX)新增欧洲股票期权和欧洲指数期货及期权。这一新增功能使得盈透证券的客户可以在单一统一平台上,除了股票、期权…

力扣469A

文章目录 1. 题目链接2. 题目代码3. 题目总结4. 代码分析 1. 题目链接 I Wanna Be the Guy 2. 题目代码 #include<iostream> #include<set> using namespace std; int main(){int highestLevelOfGame;cin >> highestLevelOfGame;set<int> levelCanPas…

【profinet】从站开发要点

目录 0、常见缩写及关键字注释 1、profinet简介 2、profinet协议栈 3、profinet数据帧 4、profinet网络解决方案示例 5、Application areas 注&#xff1a;本文主要简述profinet从站开发涉及到的知识点。【不足之处后续慢慢补充】。 0、常见缩写及关键字注释 MRP: Media…

移动硬盘接入mac无法复制文件进去怎么办,mac里的文件如何存进移动硬盘

如果要传输的文件数据量比较大&#xff0c;相比于使用U盘&#xff0c;移动硬盘是更多的选择。移动硬盘可存储量大、传输速度快&#xff0c;是实用性比较强的储存设备。不仅是Windows设备&#xff0c;Mac电脑也经常使用到移动硬盘。但有时候&#xff0c;移动硬盘在Mac上不能传文…

XHS-Downloader是一款小红书图片视频下载工具

这款软件可以提取账号发布、收藏、点赞作品链接&#xff1b;提取搜索结果作品链接、用户链接&#xff1b;下载小红书作品信息&#xff1b;提取小红书作品下载地址&#xff1b;下载小红书无水印作品文件&#xff01; &#x1f4d1; 功能清单 ✅ 采集小红书图文 / 视频作品信息…

【Pmac】PMAC QT联合开发中各种可能遇到的坑

目录 1. 错误 C2027 使用了未定义类型“PCOMMSERVERLib::DEVUPLOAD”2. 输入了正确的pmac的ip地址&#xff0c;没有显示可选的pmac设备3. Pmac DTC-28B无读数 使用QT编写PMAC上位机程序时&#xff0c;利用QT中的dump工具可以将pcommserver.exe转化为pcommserverlib.h和pcommser…

AMBA-CHI协议详解(四)

《AMBA 5 CHI Architecture Specification》 AMBA-CHI协议详解&#xff08;一&#xff09; AMBA-CHI协议详解&#xff08;二&#xff09; AMBA-CHI协议详解&#xff08;三&#xff09; AMBA-CHI协议详解&#xff08;四&#xff09; 文章目录 2.3.3 Atomic transactions2.3.4 S…

Hadoop3:MapReduce中的Shuffle机制

一、流程图 Shuffle是Map方法之后&#xff0c;Reduce方法之前的数据处理过程称。 二、图解说明 1、数据流向 map方法中context.write(outK, outV);开始&#xff0c;写入环形缓冲区&#xff0c;再进行分区排序&#xff0c;写到磁盘 reduce方法拉取磁盘上的数据&#xff0c;…

swift使用swift-protobuf协议通讯,使用指北

什么是Protobuf Protobuf&#xff08;Protocol Buffers&#xff09;协议&#x1f609; Protobuf 是一种由 Google 开发的二进制序列化格式和相关的技术&#xff0c;它用于高效地序列化和反序列化结构化数据&#xff0c;通常用于网络通信、数据存储等场景。 为什么要使用Proto…

【QT5】<重点> QT多线程

文章目录 前言 一、QThread创建多线程 二、QMutex基于互斥量的同步 三、QReadWriteLock线程同步 四、QWaitCondition线程同步 五、QSemaphore基于信号量的同步 前言 本篇记录学习QT多线程的知识&#xff0c;参考视频13.1QThread创建多线程程序_哔哩哔哩。若涉及版权问题…

Linux - 进程

一、什么是进程 首先&#xff0c;Linux是一个多用户多进程的操作系统&#xff0c;系统上可以同时运行多个进程。 进程的产生&#xff1a;①是在执行程序或者命令时产生的&#xff1b;②定时任务进程 进程的类型&#xff1a;前台进程/后台进程 前台进程&#xff1a;一个终端…

迭代器模式观察者模式

文章目录 1.引出迭代器模式1.展示院系结构2.传统方式 2.迭代器模式解决院系结构展示问题1.基本介绍2.原理类图3.类图4.代码实现1.Department.java 存储信息的对象2.College.java 被迭代的类型接口3.ComputerCollege.java 被迭代的具体实现类&#xff0c;存储数据并将其在创建迭…

契约锁电子签章平台 add 远程命令执行漏洞复现(XVE-2023-23720)

0x01 产品简介 契约锁电子签章平台是上海亘岩网络科技有限公司推出的一套数字签章解决方案。契约锁为中大型组织提供“数字身份、电子签章、印章管控以及数据存证服务”于一体的数字可信基础解决方案,可无缝集成各类系统,让其具有电子化签署的能力,实现组织全程数字化办公。通…

【LeetCode刷题】面试题 17.19. 消失的两个数字

1. 题目链接2. 题目描述3. 解题方法4. 代码 1. 题目链接 面试题 17.19. 消失的两个数字 2. 题目描述 3. 解题方法 例子假设&#xff1a; 数组A元素为 &#xff1a;1 &#xff0c;4&#xff0c;5 缺少的元素为&#xff1a;2&#xff0c; 3 那么所有整数就为1 ~ 5&#xff…

什么是无限铸币攻击?它是如何运作的?

一、无限铸币攻击解释 无限铸币攻击是指攻击者操纵合约代码不断铸造超出授权供应限制的新代币。 这种黑客行为在去中心化金融 (DeFi) 协议中最为常见。这种攻击通过创建无限数量的代币来损害加密货币或代币的完整性和价值。 例如&#xff0c;一名黑客利用了 Paid 网络的智能…