关于我想写一个Go系列的这件事

简介: 本文是Go语言专栏的开篇,作者sharkChili分享了他对Go语言的喜爱,并简要介绍了如何在Windows和Linux上搭建Go环境。文章包括下载安装包、解压、配置环境变量等步骤。此外,还展示了编写并运行第一个"Hello, sharkChili"的Go程序。最后提到了Go项目的`.gitignore`文件示例,并鼓励读者关注作者的公众号以获取更多Go语言相关的内容。

写在文章开头

第一次接触Go就被其灵巧的编程范式和并发友好的风格所惊艳到,曾经听过耗子叔说过:Go有着python的姿态和C语言的理念,所以笔者经过一段时间的了解和整理,准备写一个关于Go语言的专栏,希望对你有帮助。

这篇稿子算是本系列的一个引子,通过这篇文章你将搭建起Go语言编程的基本环境和一段非常基础的Go语言代码:

Hi,我是sharkChili,是个不断在硬核技术上作死的java coder,是CSDN的博客专家,也是开源项目Java Guide的维护者之一,熟悉Java也会一点Go,偶尔也会在C源码边缘徘徊。写过很多有意思的技术博客,也还在研究并输出技术的路上,希望我的文章对你有帮助,非常欢迎你关注我的公众号:写代码的SharkChili

搭建Go语言环境

简介

因为笔者是日常开发只用到WindowsLinux,所以这里的搭建只涉及这两套操作系统搭建的,整体来说,Go语言的环境搭建步骤和Java差不多,依次为:

  1. 下载集成开发环境安装包。
  2. 安装。
  3. 配置环境变量。

Linux版本安装

首先介绍一下Linux下的环境配置,首先到go官网下载Linux系统对应的安装包:

https://golang.google.cn/dl/

截至笔者写下这篇文章,笔者所下载的版本如下所示:

完成下载后将其上传到服务器上,然后进行解压到/usr/local目录:

tar -C /usr/local/ -xzf go1.22.0.linux-amd64.tar.gz

随后就可以进行环境变量配置,我们通过vim编辑profile

vim /etc/profile

在文件末尾添加如下一条我们go的解压路径:

export PATH=$PATH:/usr/local/go/bin

再使用source命令使之生效:

source /etc/profile

完成后键入如下命令:

go version

如果控制台输出对应版本信息则说明配置生效了:

go version go1.22.0 linux/amd64

Windows环境配置

而Windows配置则相对容易一些,首先我们需要到Go官网下载Go dev,地址如下:

https://go.dev/dl/

笔者选择的版本如下图所示,下载完成后解压安装即可:

安装go编译器后,它会自动帮我配置环境变量,所以完成安装后我们直接在cmd输入一下go,如果可以看到版本信息即说明本次安装成功了:

你的第一行Go语言代码

我们首先创建一个名为main.go的文件,然后编写如下代码,可以看到笔者指明了packagemain,因为go语言在运行时,其底层会定位到main包下的main方法执行,所以我们创建第一个go文件一定要注意这一点,然后我们导入fmt(format)包,在main方法中通过fmt包的Println方法输出一段话:

package main

import "fmt"

func main() {
   
   
    fmt.Println("hello sharkChili")

}

完成这个文件的创建之后,我们在Linux系统运行如下指令,对文件进行编译:

go build main.go

然后执行编译后的文件:

./main

最终输出结果如下,自此,我们完成了对Go语言第一行代码的编写

hello sharkChili

当然,我们也可以直接编译并运行,用户只需输出run指令即可:

go run main.go

go程序的.gitignore

很其他编程语言一样,Go语言也有自己的.gitignore文件,读者在学习Go时如果希望用Git进行版本控制,建议使用笔者推荐的这个版本:

tmp
.env
gohub
.DS_Store
.history

# Golang #
######################
# `go test -c` 生成的二进制文件
*.test
# go coverage 工具
*.out
*.prof
*.cgo1.go
*.cgo2.c
_cgo_defun.c
_cgo_gotypes.go
_cgo_export.*

# 编译文件 #
###################
*.com
*.class
*.dll
*.exe
*.exe~
*.o
*.so

# 压缩包 #
############
# Git 自带压缩,如果这些压缩包里有代码,建议解压后 commit
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip

# 日志文件和数据库 #
######################
*.log
*.sqlite
*.db

# 临时文件 #
######################
tmp/
.tmp/

# 系统生成文件 #
######################
.DS_Store
.DS_Store?
.AppleDouble
.LSOverride
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
.TemporaryItems
.fseventsd
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# IDE 和编辑器 #
######################
.idea/
/go_build_*
out/
.vscode/
.vscode/settings.json
*.sublime*
__debug_bin
.project

# 前端工具链 #
######################
.sass-cache/*
node_modules/

小结

本篇文章是笔者对Go的一个引子,简单的介绍了Go的环境搭建和基本代码示例,希望本篇文章对你有所收获。

我是sharkchiliCSDN Java 领域博客专家开源项目—JavaGuide contributor,我想写一些有意思的东西,希望对你有帮助,如果你想实时收到我写的硬核的文章也欢迎你关注我的公众号:写代码的SharkChili和笔者的交流群进行深入交流。

目录
相关文章
|
6月前
|
机器学习/深度学习 达摩院 PyTorch
GitHub 1.3k 一款能“填色回忆”的神器:DDColor 让老照片鲜活又逼真
DDColor 是阿里达摩院推出的图像自动着色模型,采用双解码器架构与 Colorfulness Loss 技术,实现黑白图到高保真彩色图的智能转换。支持 GPU/CPU 推理,兼容历史照片、动画、游戏截图等多场景,具备高效、真实、多样、易用等特点,广泛适用于影像修复、艺术创作等领域。
792 24
|
10月前
|
存储 安全 生物认证
苹果上架APP遇到提示缺少出口合规证明时应该如何处理-什么是APP加密文稿-优雅草卓伊凡
苹果上架APP遇到提示缺少出口合规证明时应该如何处理-什么是APP加密文稿-优雅草卓伊凡
916 62
苹果上架APP遇到提示缺少出口合规证明时应该如何处理-什么是APP加密文稿-优雅草卓伊凡
|
传感器 网络协议 物联网
嵌入式开发中的常用实时操作系统(RTOS)介绍
选择合适的RTOS是嵌入式开发中的关键步骤,不同的RTOS具有各自的优势和适用场景。开发者需要根据项目需求综合考虑硬件平台、实时性要求、开发资源和支持等因素,选择最合适的RTOS系统。例如,如果需要开源和灵活的解决方案,可以选择Zephyr或RT-Thread;如果需要高性能和商业支持,可以选择VxWorks或ThreadX。希望本文能帮助您更好地了解各类RTOS,并为您的嵌入式开发项目提供参考。
1437 1
|
Java 关系型数据库 MySQL
MySQL 分库分表方案
本文总结了数据库分库分表的相关概念和实践,针对单张表数据量过大及增长迅速的问题,介绍了垂直和水平切分的方式及其适用场景。文章分析了分库分表后可能面临的事务支持、多库结果集合并、跨库join等问题,并列举了几种常见的开源分库分表中间件。最后强调了不建议水平分库分表的原因,帮助读者在规划时规避潜在问题。
1142 20
|
UED 开发者 容器
鸿蒙next版开发:ArkTS组件通用属性(位置设置)
在HarmonyOS next中,ArkTS提供了align、direction、position、markAnchor、offset和alignRules等通用属性,用于精确控制组件在用户界面中的位置和布局。本文详细解读了这些属性,并提供了示例代码进行说明。通过这些属性,开发者可以实现精确布局、动态界面调整和提升用户体验。
1803 6
|
Ubuntu Unix Linux
在Ubuntu安装RPM文件
Ubuntu软件源包含数千个deb软件包,可以从Ubuntu软件中心或使用apt命令行安装。 Deb是所有基于Debian的Linux发行版,例如包括Ubuntu,Linux mint等发行版使用的安装包格式。 如果某些软件在Ubuntu软件源中不可用,可以通过启用适当的软件源来安装,然后使用APT命令安装。 在大多数情况下,当软件开发者不提供软件源时,他们都有一个下载页面,您可以在该页面下载并安装deb软件包,或者下载源码然后编译。 虽然不常见,但某些软件开发者可能会仅发布RPM包格式的文件。RPM是Red Hat及其衍生的Linux发行版,例如如CentOS,Fedora使用软件包
482 5
|
机器学习/深度学习 人工智能 自然语言处理
LLM的测试工具:LaVague平替成国内大模型
LaVague是一款使用LLM将自然语言转换为Selenium代码以实现自动化测试的工具。由于huggingface的某些模型需付费且访问不便,本文介绍了如何使用智谱的免费大模型作为替代。智谱提供免费的embedding模型和大量令牌。
785 1
|
安全 网络安全 数据安全/隐私保护
VulnHub 靶场--super-Mario-Host超级马里奥主机渗透测试过程
这篇文章描述了在一个网络安全靶场环境中进行渗透测试的过程。首先,从百度网盘下载并导入虚拟机镜像,然后将其网络设置为NAT或仅主机模式。接下来,通过扫描靶机IP地址的本地网络段,发现靶机IP为192.168.220.135,并且了解到靶机上有一个名为“mario.supermariohost.local”的Web服务,运行在8180端口。尝试SSH弱口令攻击失败后,通过信息收集找到一个名为“luigi.php”的页面,其中包含一段英文提示,提示需要将域名添加到hosts文件中。 通过cewl工具从luigi.php生成字典文件passwords,然后使用hydra工具尝试SSH登录,成功获得l
378 0
有关文件转pdf的代码示例
有关文件转pdf的代码示例
401 0
|
人工智能 移动开发 数据可视化
推荐几个不用写代码也能做游戏的工具
推荐几个不用写代码也能做游戏的工具
3325 0