【30天熟悉Go语言】2 Go开发环境搭建、Hello World程序运行

news2025/7/19 17:38:16

文章目录

  • 一、前言
  • 二、安装和配置SDK
    • 1、安装
    • 2、环境配置
  • 三、开发工具
    • 1、GoLand
    • 2、VS Code
  • 四、Hello World程序
      • 通过命令运行
        • 1)go build
        • 2)go run
    • 1、Go 和 Java的文件结构对比
    • 2、Go和Java常用包对比
  • 五、Go执行流程
    • 1、先编译再运行
    • 2、一次性编译运行
    • 区别?
  • 六、总结和后续

一、前言

Go系列文章:

  1. GO开篇:手握Java走进Golang的世界

Go专栏传送链接:https://blog.csdn.net/saintmm/category_12326997.html

二、安装和配置SDK

1、安装

1> 进入到Go官网(https://golang.org),点击Download按钮;
在这里插入图片描述

2> 选择操作系统对应的环境版本(图形化安装),进行下载,比如博主的windows:

在这里插入图片描述

3> 下载完一路安装,博主的安装目录如下:

在这里插入图片描述

当然除此之外,还可以选择压缩包解压的方式;

PS:不用翻墙就可以访问的GO中文社区SDK下载地址:https://studygolang.com/dl。

2、环境配置

这个操作老常规了,通过路径(此电脑 -> 属性 -> 高级系统设置 -> 环境变量)找到系统变量;

在这里插入图片描述

1> 点击《新建》,添加两个环境变量GOPATH、GOROOT;

  • GOROOT为go命令所在的bin目录(GO的安装路径)
  • GOPATH路径为我们自己指定的GO程序所在的文件夹,当然在IDEA中开发,可以选择不配置这个环境变量,直接在IDEA中配置GOPATH。
    • PS:如果是go1.14以前的版本,需要在GoPath路径下创建三个子目录,之后编写的Go项目都存放在src中。
      • src ---- 存放工程文件
      • pkg ---- 编译后生成的,包的目标文件
      • bin ---- 生成的可执行文件。

在这里插入图片描述

在这里插入图片描述

2> 在 环境变量 Path 中增加GOROOT/bin;

在这里插入图片描述

3> 在控制台验证环境变量的配置

在这里插入图片描述

三、开发工具

目前最常用的Go开发工具有三种:VS Code、LiteIDE、GoLand。

  • visual studio code, Microsoft产品(简称VSCode):一个运行于Mac Os、Windows和Linux 之上的,默认提供Go语言的语法高亮,安装Go语言插件,还可以支持智能提示,编译运行等功能。
  • LitelDE,是一款国人开发、专门为Go语言开发的跨平台轻量级集成开发环境(IDE)。
  • GoLand, JetBrains公司的IDE工具系列产品,专门为Go语言服务;和Java的Intellij IDEA一样好用。

个人建议一步到位使用GoLand,如果你真的找不到激活码、也不会自己购买。那就用VS Code吧。

1、GoLand

1> 下载:

  • 访问官网(https://www.jetbrains.com/zh-cn/go/) 点击下载按钮;

在这里插入图片描述

更多版本见官网(https://www.jetbrains.com/zh-cn/go/download/other.html)

2> 创建项目:

在这里插入图片描述

创建完成之后,项目结构如下:

在这里插入图片描述

3> 配置GOROOT:

在这里插入图片描述

2、VS Code

主打的就是一免费,官网地址(https://code.visualstudio.com/)。

四、Hello World程序

1> 编码

package main

import "fmt"

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

注意:package 一定要是main,否则执行不了。

2> 运行

在这里插入图片描述

3> 运行结果

在这里插入图片描述

通过命令运行

1)go build

可以选择用命令先将源代码编译成可执行源码文件、然后再运行。命令如下:

go build hello.go
.\hello.exe

在这里插入图片描述

注意windows中直接运行hello.exe可能会报错,将命令调整为.\hello.exe即可。

此外,执行go build命令时,可以指定编译后的文件名:

go build -o saint.exe hello.go

在这里插入图片描述

2)go run

也可以直接通过 go run命令直接编译 执行 源文件。

go run hello.go

在这里插入图片描述

1、Go 和 Java的文件结构对比

最关键的一个点,Go主程序的入口类中package必须为main,Java主程序的入口package可以随便写。

1> Go的文件结构:

// 主程序必须是写成main包名
package main

// 导入别的类库
import "fmt"    

// 全局常量定义
const  num = 10
  
// 全局变量定义
var name string = "li_ming"

// 类型定义
type P struct {

}
  
// 初始化函数
func init() {

}

// main函数:程序入口
func main() {
	fmt.Printf("Hello World");
}

2> Java的文件结构:

// 包名
package my_package;
       
// 导入其他包中的类
import java.io.*;

public Class MainTest{ 
	// main方法:程序入口
    public void static main(String[] args) {
	
	}
}
// Model类
Class People {
	// 成员变量
	public String name;
	public int age;
            
	// 成员方法
	public void doSomething() {
	            
	}
}

2、Go和Java常用包对比

Go中文API文档:https://studygolang.com/pkgdoc

GoJava
IO流操作bufio/osjava.lang.io
字符串操作stringsjava.lang.String
容器container(heap/list/ring)java.lang.Collection
时间timejava.time/java.lang.Date
syncjuc
数学运算mathjava.math

五、Go执行流程

Go的执行流程有两种方式:先编译再运行、一次性编译运行。

1、先编译再运行

在这里插入图片描述

2、一次性编译运行

在这里插入图片描述

区别?

1> 编译(go build)时,编译器会将程序运行所依赖的库文件都包含在可执行文件中,所以可执行文件会大很多。

在这里插入图片描述

2> 先编译生成了可执行文件之后,将该可执行文件拷贝到没有go开发环境的机器上,仍然可以运行;但是go run 源代码的方式,如果想在另外一个机器上运行,需要有go开发环境,否则无法执行。

  • 此处机器上的操作系统要一样,不能是windows到linux、或 到 unix。

3> go run 方式的 运行时间会比 go build 之后 再运行的方式 长那么一点

六、总结和后续

本文介绍了如何在一个电脑上从零开始搭建GO开发环境、开发工具,并开始写一个Hello World程序;

进而介绍了Java和Go类文件结构的差异,以及Go源文件的两种执行方式 和 对比。

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

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

相关文章

一、尚医通登录需求

文章目录 一、登录需求1、登录效果2、登录需求 二、登录1,搭建service-user模块1.1 搭建service-user模块1.2 修改配置1.3 启动类1.4 配置网关 2、添加用户基础类2.1 添加model2.2 添加Mapper2.3 添加service接口及实现类2.4 添加controller 3、登录api接口3.1 添加…

leetcode刷题之数组问题总结,二分法,移除元素,滑动窗口相关问题,螺旋矩阵相关问题

目录 一、二分查找相关应用704.二分查找35.搜索插入位置方法一:二分法暴力解法 34.在排序数组中查找元素的开始位置和最后一个位置方法一:暴力解法方法二:二分法,确定左右两侧的边界 69.x的平方根方法一:二分法方法二:暴力解法错解…

图表控件LightningChart JS v.4.0全新发布!引入DataGrid 组件、新的颜色主题

LightningChart JS是性能最高的JavaScript图表库,专注于实时数据可视化。是Web上性能最高的图表库具有出色的执行性能 - 使用高数据速率同时监控数十个数据源。 GPU加速和WebGL渲染确保您的设备的图形处理器得到有效利用,从而实现高刷新率和流畅的动画。…

MySQL主从同步(不开GTID)

一、背景 了解并熟悉MySQL的主从同步的搭建过程,并解决搭建过程中所碰到的问题。 二、目标 了解并熟悉MySQL的主从同步的搭建过程,并解决搭建过程中所碰到的问题。 IP地址MySQL版本主从关系192.168.3.2445.6.51Master192.168.3.2455.7.41Slaver192.16…

Flutter三棵树系列之详解各种Key | 京东云技术团队

简介 key是widget、element和semanticsNode的唯一标识,同一个parent下的所有element的key不能重复,但是在特定条件下可以在不同parent下使用相同的key,比如page1和page2都可以使用ValueKey(1) 。 常用key的UML关系图如上,整体上…

Apache Hudi 在袋鼠云数据湖平台的设计与实践

在大数据处理中,实时数据分析是一个重要的需求。随着数据量的不断增长,对于实时分析的挑战也在不断加大,传统的批处理方式已经不能满足实时数据处理的需求,需要一种更加高效的技术来解决这个问题。Apache Hudi(Hadoop …

安科瑞对于热继电器对电动机保护的探讨

安科瑞 徐浩竣 江苏安科瑞电器制造有限公司 zx acrelxhj 摘要:电动机烧毁是每一个生产企业都无法回避的现象,怎样加强电动机保护,使生产工艺系统的稳定,减少企业非正常停机时间。电动机保护成为电气技术人员一个重要课题。因此&#xff0c…

嵌入式 QT QListWidget 显示列表视图的小部件类

目录 1. 添加对象 2. 设置间距 3. 获取内容 4. 删除对象 5.更改对象内容 在Qt框架中,QListWidget是一个用于显示列表视图的小部件类。它提供了一种方便的方式来显示和管理项目列表。QListWidget可以显示文本、图像和其他自定义的项目项,并允许用户进…

Parrot OS 5.3已经发布并可普遍下载

导读Parrot Security近日宣布,Parrot OS 5.3已经发布并可普遍下载,这是这个基于Debian的、面向红客和渗透测试者的、以安全为重点的发行版的最新稳定版本。 Parrot OS 5.3是Parrot OS 5 “Electro Ara “系列的第三部,在Parrot OS 5.2之后两个…

私有化部署即时通讯为什么更安全

即时通讯作为企业沟通工具,在企业的内部沟通和外部交流中发挥着越来越重要的作用。同时,企业即时通讯在提升企业内部效率的同时,也面临着巨大的安全威胁。 根据数据显示,全球有超过4亿人在使用 IM。而其中因用户隐私泄露导致的数据…

十一、数据仓库详细介绍(应用)

这是数据仓库详细介绍的最后一篇,后续还会在补充一些,把遗漏的或者没讲清楚的追加进来。 1. 前言 数据仓库是一种数据管理的方法论,理论概念很早就提出来了,而且各个行业都有广泛深入的应用。因此到目前为止该方法论的理论和实践体…

Taro小程序富文本解析4种方法

1. Taro组件rich-text 优点:使用极其方便,引用一下就行了。缺点:不支持视频,放弃!2. wxParse https://github.com/icindy/wxParse 优点:支持样式,视频缺点:进入页面图片会有由大变正常,太影响了吧。3. taro-parse https://taro-ext.jd.com/plugin/view/5e61f2acb33351…

【Netty】Netty 概述(一)

文章目录 前言一、Java原生API之痛二、Netty的优势2.1 非阻塞 I/O2.2 丰富的协议2.3 异步和事件驱动2.4 精心设计的API2.5 丰富的缓冲实现2.6 高效的网络传输 三、Netty 核心概念3.1 核心组件3.1.1 事件模型3.1.2 字节缓冲区3.1.3 通信API 3.2 传输服务3.2.1 NIO3.2.2 epoll3.2…

让数据背后的那些话创造价值 | 数据增长

从行业背景而言,流量红利逐渐消失,野蛮生长的互联网时代接近尾声。传统的烧钱模式、靠体力投放的形式日渐乏力。但是,企业总是要追求增长的。所以在行业大背景下,依靠技术和数据的力量寻求更科学、更高效的方法达成营销目标&#…

Windows系统数据结构——最小生成树、Prim算法和Kruskal算法

我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows系统数据结构——最小生成树、Prim算法和Kruskal算法。 我在各在论坛看了很多相关帖子,发现一个简单的问题都被复杂化了。最小生成树、Prim算法和Kruskal算法真的没有大家想的…

【JavaSE】Java基础语法(五):数组详解

文章目录 🍸1.1 数组介绍🍸1.2 数组的动态初始化1.2.1 什么是动态初始化1.2.2 动态初始化格式🍸1.3 数组元素访问1.3.1 什么是索引1.3.2 访问数组元素格式1.3.3 示例代码 🍸1.4 内存分配1.4.1 内存概述1.4.2 java中的内存分配 &am…

Ubuntu crontab 遇到的sh脚本一些问题(手动执行可以,自动执行不行)

问题一: 问题描述: 在写一个脚本循环时候,出现“let:not found”,这是因为在ubuntu默认是指向bin/dash解释器的,dash是阉割版的bash,其功能远没有bash强大和丰富.并且dash不支持let和i等功能. 解决办法: 打开一个终端输入&#xf…

springboot基于Java的校园二手物品交易平台jspm9qw4i

本基于Java的校园二手物品交易平台采用Java语言和Jsp技术,框架采用SPRINGBOOT,搭配Mysql数据库,运行在Idea里。本系统针对校园二手商品的交易而开发,提供管理员、学生、学生二手三种角色的服务。总的功能包括商品的查询、商品的购…

基于html+css的图展示89

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

【六袆 - Redis】Redis内存数据库;redis数据结构;redis文档

Redis 关于redis 官方文档: https://redis.io/docs/about/ https://redis.com/redis-enterprise/data-structures/ 关于redis Redis: 是一个开源(BSD 许可)内存数据结构存储,用作数据库、缓存、消息代理和流引擎。Redis提供数据结…