Go程序开发快速入门

news2024/12/28 21:28:24

当进行Go程序开发时,需要注意以下几点:

1、代码可读性:尽可能使用有意义的变量名和注释,确保代码易于理解和维护。

2、错误处理:Go语言有很好的错误处理机制,应该合理地处理错误,以便于排除错误。

3、内存管理:Go语言自动管理内存,但是如果存在大量的内存分配和垃圾回收,会影响程序性能,因此需要注意内存的使用。

4、并发处理:Go语言是一种并发编程语言,可以充分利用多核处理器。但需要注意协程之间的数据同步和互斥问题。

5、测试:编写高品质的测试代码可确保程序正确性和稳定性。

6、性能优化:尽可能的减少内存分配和垃圾回收,使用适当的数据类型和算法。

希望这些注意点能够帮助你进行Go程序开发,具体我们实操以下。

在这里插入图片描述

环境部署

系统:Ubuntu 21.10(Linux实体机)

需求

要求开发一个 hello.go 程序,可以输出 hello,world

开发的步骤

1、使用 goland 作为程序开发编辑器;

2、将代码编写到扩展名为 hello.go 的文件中;

3、通过 go run 命令查看 hello.go 运行效果;

4、通过 go build 命令对该 go文件进行编译,生成系统可执行文件;

5、在dos命令下执行生成的可执行文件;

go程序目录结构建议

在这里插入图片描述

go 程序代码编写

将编写的代码存储到 project/main/hello.go 文件中,其中 .go 是 golang编程语言可识别的文件后缀

package main

import `fmt`

func main()  {
	fmt.Println("hello,world")
}

解释:

在这里插入图片描述

go run 查看运行效果

# 在 project/main 执行以下命令
go run hello.go

在这里插入图片描述

使用 go run 这种方式执行 go 程序源码,会先载入 hello.go 的源码并由 go 进行编译成二进制码让计算机能识别执行。

go build 构建可执行文件并运行

# 在 project/main 执行编译命令将生成可执行文件 hello
go build hello.go
# 查看是否编译成功
ll
# 执行二进制可执行文件(在linux下开发go和在windows开发基本是一样的,区别在linux运行可执行的程序时是以 ./文件名 的方式)
./hello
# 见下图操作过程

在这里插入图片描述

使用 go build 这种方式执行 go 程序源码打包成计算机可直接执行的二进制文件,与 go run 的区别在于 go run 是需要进行源码编译执行,go build 生成的文件是计算机可直接执行的文件。

go 执行流程分析

go build(速度快)

在这里插入图片描述

go run

在这里插入图片描述

两种执行流程方式区别

1、如果我们先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没有go开发环境的系统上,任然是可以直接执行。

2、如果我们是直接 go run go源代码,那么如果要在另外一个机器上这么运行,也需要go开发环境,否则无法执行。

3、在编译时,编译器会将程序运行依赖的库文件包含在可执行文件中,所以,可执行文件变大了很多。

编译和运行说明

什么是编译?
1、有了go源码文件,通过编译器将其编译成机器可以识别的二进制码文件。

2、该源文件目录下,通过 go build 对 hello.go 文件进行编译。可以指定生成可执行文件名,其中在 windows下必须是 .exe 后缀。

3、编译的时候可以用 -o xx 生成指定的编译文件名,例如linux下 go build -o test hello.go。

4、如果程序没有错误,没有任何提示,会在当前目录下出现一个可执行文件(windows下是.exe,linux下是一个可执行文件),该文件是二进制码文件,是可以直接执行的程序。

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

在这里插入图片描述

什么是运行?

1、直接运行生成的可执行Go程序,比如 hello

2、通过运行工具 go run 对源码文件进行运行

go 程序开发注意事项(重点)

1、go源文件以“go”为文件名的扩展名。

2、go应用程序的执行入口是 main() 方法。

3、go语言严格区分大小写。

4、go方法由一条条语句构成,每个语句后不需要分号(go语言会在编译时为每行后面自动加上分号),这也体现出golang的简洁性。

5、go编译器是一行行进行编译的,因此我们一行就一条语句,不能把多条语句写在同一行,否则会报错。

6、go语言 定义的变量 或者 import 的包如果没有使用到,代码不能编译通过。

7、大括号都是成双成对出现的,缺一不可。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【运动规划算法项目实战】路径规划中常用的插值方法

文章目录 简介一、线性插值代码实现二、三次样条插值三、B样条插值四、贝塞尔曲线插值总结简介 常见用于处理路径平滑的插值算法主要包括线性插值、三次样条插值、B样条插值和贝塞尔曲线插值等,下面分别介绍它们的优缺点和使用场景。 一、线性插值 线性插值是最简单的插值方…

ROS——Teb算法的优化

一、简介 “TEB”全称Time Elastic Band(时间弹性带)Local Planner,该方法针对全局路径规划器生成的初始轨迹进行后续修正(modification),从而优化机器人的运动轨迹,属于局部路径规划。 关于eletic band(橡…

Java 依赖注入(DI)

只要做过 Java 一段时间,基本上都会遇到这个问题。 Dependency Injection (DI)中文称之为依赖注入。 都说了 Spring 的关键部分就是 Dependency Injection (DI),但是什么是依赖,为什么要注入&…

AirServer2023最新免费苹果电脑投屏工具

AirServer是一个Mac专用投屏工具,功能强大,并且可以通过网络和其他平台同步视频内容。可以使用多个设备进行投屏,快速查看同一局域网内的视频。支持的设备:苹果系统。支持 Windows、 Mac、 Android、 iOS、 windows平台。 1、支持…

用腾讯轻联,打通草料二维码与其他应用的连接

一、功能介绍 腾讯轻联是腾讯云推出的“应用连接器”,无需编程,实现多应用的连接。草料二维码作为首批入驻腾讯轻联的合作伙伴和腾讯团队进行了深度协同,提供给用户以下能力: 1.快速对接主流应用 实现企业微信、钉钉、腾讯文档…

基于AT89C52单片机的电子密码锁设计

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87688544?spm=1001.2014.3001.5503 源码获取 主要内容: 设计一个简易的电子密码锁,并进行仿真实验,该系统能够进行密码输入功能、上锁功能、在锁合状态下通过输入密码进行…

Java并发编程 —— 延迟队列DelayQueue源码解析

一、什么是DelayQueue DelayQueue是一个支持并发的无界延迟队列,队列中的每个元素都有个预定时间,当线程从队列获取元素时,只有到期元素才会出队列,没有到期元素则阻塞等待。队列头元素是最快要到期的元素。因此DelayQueue可用于…

[java聊天室]多个客户端与服务器说话多线程(二)

多客户端链接 之前(java聊天室一)只有第一个连接的客户端可以与服务端说话。 原因: 服务端只调用过一次accept方法,因此只有第一个客户端链接时服务端接受了链接并返回了Socket,此时可以与其交互。 而第二个客户端建立链接时,由于服务端没有再次调用…

【Hello Linux】线程池

作者:小萌新 专栏:Linux 作者简介:大二学生 希望能和大家一起进步 本篇博客简介:简单介绍linux中线程池概念 线程池 Linux线程池线程池的概念线程池的优点线程池的应用场景线程池实现 Linux线程池 线程池的概念 线程池是一种线程…

PyTorch深度学习实战 | 高斯混合模型聚类原理分析

01、问题描述 为理解高斯混合模型解决聚类问题的原理,本实例采用三个一元高斯函数混合构成原始数据,再采用GMM来聚类。 1) 数据 三个一元高斯组件函数可以采用均值和协方差表示如表1所示: ▍表1 三个一元高斯组件函数的均值和协方差 每个高斯…

git的使用——操作流程

一、什么是git git是一个开源的分布式版本控制软件,能够有效并高效的处理很小到非常大的项目。 二、添加SSH公钥 安装下载后,会发现鼠标右击,会出现 Git Bash Here 这个选项,如图所示,点击进入 1.打开git窗口后&…

018:Mapbox GL加载Google地图(影像瓦片图)

第018个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载google地图。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共80行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:https://xia…

鉴智机器人重磅发布双目智驾解决方案,新一代全系智驾产品线亮相上海车展

4月18日,以「拥抱汽车行业新时代」为主题的2023上海车展正式拉开帷幕。以视觉3D理解为核心的下一代自动驾驶系统提供商鉴智机器人,携全新升级的智驾产品线首次亮相车展,重磅发布基于AI的双目立体视觉智驾方案。 凭借双目立体视觉系统的差异化…

智能洗地机好用吗?值得入手的洗地机推荐

洗地机是一款高效的地面清洁设备,不仅可以很好清理地面不同形态的干湿垃圾,还减少了人工和水资源的浪费,是我们日常生活中必不可少的清洁工具。作为以一位评测博主,很多朋友咨询我在选购洗地机时应该注意哪些要点,有哪…

记一次生产要我狗命的问题

问题起因:引入disruptor框架 简单理解就是生产消费者模式 用来支持高并发 先说问题和改正 再展开 问题:没有当时的截图了 直接描述吧 问题就是cpu占用过高 居高不下的那种 排查:就是看线程名字和占用的大概 再根据近期发布的东西 再根据本地…

学系统集成项目管理工程师(中项)系列08b_合同管理(下)

1. 项目变更约定 1.1. 合同生效后,当事人不得因姓名、名称的变更或者法定代表人、负责人、承办人的变动而不履行合同义务 2. 违约责任的承担方式 2.1. 继续履行 2.2. 采取补救措施 2.3. 赔偿损失 2.4. 支付约定违约金或定金 3. 注意事项 3.1. 当事人的法律资…

Linux FTP服务

FTP服务 作用 传输文件 端口 FTP服务器默认使用TCP协议的20、21端口与客户端进行通信 20端口用于建立数据连接,并传输文件数据 21端口用于建立控制连接,并传输FTP控制命令 模式 FTP数据连接分为主动模式和被动模式 主动模式:客户端告诉服务端…

电路原理-反激式电路

1、1反激式电路是小功率电源(150W以下)当中,最常用的电路,它的工作原理如下。 1、2如图1,变压器T1,标记红点的端,12、3、A为同名端,10、1、B为异名端。 当MOS管导通的时候,初级绕组N1、…

瑞吉外卖LinuxRedis

1、linux简介 Linux系统版本 Linux系统分为内核版和发行版 内核版: 由LinusTorvalds及其团队开发、维护 免费、开源 负责控制硬件 发行版: 基于Linux内核版进行扩展 由各个Linux厂商开发、维护 有收费…

C++类的理解与类型名,类的成员,两种定义方式,类的访问限定符,成员访问,作用域与实例化对象

面向过程和面向对象初步认识 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题 C是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成 面向…