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

初识golang

环境配置

这里通过debian为例进行介绍go在linux系统下的环境配置

1.下载go的二进制包

# 示例:下载 Go 1.25.1 (请替换为最新版本链接)
wget https://go.dev/dl/go1.25.1.linux-amd64.tar.gz

2.解压安装包到指定的路径

/user/local 这个路径是标准和推荐的安装位置

# 删除可能存在的旧版本
sudo rm -rf /usr/local/go
# 解压新的压缩包
sudo tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz

3.配置环境变量

# 编辑配置文件
nano ~/.bashrc# 在文件末尾添加以下行
export PATH=$PATH:/usr/local/go/bin

进行保存文件并进行退出。

更新环境便令配置

source ~/.bashrc

4.验证环境的安装

go version
# 预期输出: go version go1.25.1 linux/amd64

出现预期输出的结果就证明go环境已经配置完成啦,可以进行go语言的编程之旅了。

第一个go程序

package main
import "fmt"func main(){fmt.Println("Hello golang")
}

这虽然是最简单的go程序,但也要知其然知其所以然

package关键字

用于声明当前文件属于哪个包,main又是一个特殊的包,只有包的命名为main时,才是告诉go的编译器:请帮我把这个程序编译成一个可执行程序,而不是一个库

  • 对比一下:如果你在写一个可以被其他程序调用的工具库,你可能会把它命名为 package utilspackage mylib。但只有 package main 才能生成一个可以直接运行的文件。

import关键字:

这也是一个关键字,用于 导入(import) 其他包。因为我们不可能把所有功能都写在一个文件里,Go 允许我们导入标准库或者其他人写好的库,来使用它们提供的功能。

"fmt": 这是我们导入的包的名称。fmt 是 Go 标准库(Standard Library) 中的一个包,它的名字是 "format" 的缩写。这个包提供了大量用于格式化输入和输出的功能,比如打印文本到屏幕、从用户那里读取输入等。

在 C++ 语言中,这类似于 #include <iostream>

func关键字:

声明这是一个函数

golang的执行流程

go run 源文件
  • 作用:编译 + 立即执行。

  • 过程

    1. Go 会先把指定的源码编译成一个临时的可执行文件(通常放在系统临时目录中)。

    2. 立刻运行这个临时文件。

    3. 运行结束后,临时文件会被删除。

go build 源文件
  • 作用:编译成可执行文件(或库),但不自动运行

  • 过程

    • 根据源码和依赖生成一个二进制文件,保存在当前目录或 -o 指定位置。

    • 你可以随时手动运行该二进制文件。

  • 适合发布或长期使用。

go的语法注意事项

我本人是比较熟悉C/C+的,这里通过和C++进行类比来记录,建议也通过和比较熟悉的语言来类比来看

  • 源文件是以“go”为扩展名的,就像c++中是以cpp为扩展名一样
  • go源程序的函数结合和C++一样都是以main函数为程序的入口的
  • go语言也是严格区分大小写的
  • go语言各个语句之间是和C++不同的,语句之间是不通过分号来进行结尾的,也就是说go的编译器是通过行来进行判断语句结束的,所以每一行只能有一个语句,否则报错
  • 定义的变量和包如果没有用到,则编译是编不过的,这相对于C++来说可以理解成编译器更严格一些

关于go中的注释

Go支持c语言风格的/**/块注释,也支持c++风格的//行注释。行注释更通用,块注释主要用于针对包的详细说明或者屏蔽大块的代码
(1)行注释 //     VSCode快捷键:ctrl+/  再按一次取消注释
(2)块注释(多行注释) /**/        VSCode快捷键:shift+alt+a 再按一次取消注释
注意:块注释中不可以嵌套块注释


提示:官方推荐使用行注释 //

代码风格

缩进

  • 向后缩进:Tap
  • 向前取消缩进:Shift + Tap
  • 通过gofmt命令进行调整缩进
# 直接修改文件
gofmt -w myfile.go# 只打印格式化结果到标准输出(不修改文件)
gofmt myfile.go# 递归格式化当前目录下所有 Go 源文件
gofmt -w .# 显示和当前文件的差异(diff 模式)
gofmt -d myfile.go

大多数 IDE/编辑器(VS Code、GoLand、Vim 等)保存时自动调用 gofmtgo fmt

在 CI/CD 中也常用 go fmt ./... 来保证代码一致。

运算符

运算符两边通过空格进行间隔

注释

官方是推荐通过 // 来进行注释,上面也有进行介绍过,通过 /**/ 也是可以的

行长约定

一行最长不超过80个字符,超过的请使用换行展示,尽量保持格式优雅

API

文档

Go语言提供了大量的标准库,因此 google 公司也为这些标准库提供了相应的API文档,用于告诉开发者如何使用这些标准库,以及标准库包含的方法。官方位置:https://golang.org

Golang中文网在线标准库文档: https://studygolang.com/pkgdoc

在Linux下go还提供了官方用于进行查看文档的命令

go doc <包名>.<函数名>

文档中对应的函数源码

还是使用 go doc 命令 

这是 Go 官方提供的最直接、最便捷的命令行方式,强烈推荐首选此方法。

go doc 命令不仅可以查看文档,加上 -src 参数后可以直接在终端显示函数的源代码。

步骤:

  1. 打开你的终端。
  2. 使用以下格式的命令:
go doc -src <包名>.<函数名>


文章转载自:

http://feZYdnPl.qynnw.cn
http://Up7V3Gz0.qynnw.cn
http://sYWDXEX1.qynnw.cn
http://YI2Uj79Y.qynnw.cn
http://eRf0iYvP.qynnw.cn
http://xgyaU3Uv.qynnw.cn
http://DoH9rPU9.qynnw.cn
http://AfwrOm3k.qynnw.cn
http://cCukFjnh.qynnw.cn
http://x6ytA5Za.qynnw.cn
http://mgBObiXa.qynnw.cn
http://PNwDHReh.qynnw.cn
http://ykEVyPvO.qynnw.cn
http://z6qk76TU.qynnw.cn
http://gDk9HXSA.qynnw.cn
http://cRsjAIf2.qynnw.cn
http://drPWY1ab.qynnw.cn
http://X6pbHUKY.qynnw.cn
http://BuQsduPl.qynnw.cn
http://y96s7EmI.qynnw.cn
http://VTYrTM0m.qynnw.cn
http://RAjFCn26.qynnw.cn
http://3Q7qrtXm.qynnw.cn
http://dWZIdSns.qynnw.cn
http://mw6H3rvi.qynnw.cn
http://XgIiJSUl.qynnw.cn
http://m1Przmvv.qynnw.cn
http://8PxdGI9T.qynnw.cn
http://TBGutwfv.qynnw.cn
http://JyR3YJxd.qynnw.cn
http://www.dtcms.com/a/388026.html

相关文章:

  • UE5 the “XXX“plugin was designed for build XXX,Attempt to load it anyway
  • docker快速安装环境
  • 如何安装TraeCN(字节跳动的IDE)使用AI IDE书写Vue3数据可视化大屏项目
  • Spark NLP: 最先进的自然语言处理和LLM库
  • 基于国产银河麒麟服务器SP3项目实战(Nginx+Keepalive)实现高可用负载均衡
  • 每日随机展示10个wordpress置顶文章
  • Leecode hot100 - 303. 区域和检索
  • 【审计试题案例】
  • 深度学习基础:线性回归与Softmax回归全面解析
  • C语言Prj03 运行显示乱码的解决方案
  • 车载操作系统总体技术要求解析
  • Spring Boot + MyBatis 实现站位标记系统实战
  • 读取X射线DICOM图像时需注意MONOCHROME1和PixelSpacing
  • mp4格式分析
  • LeetCode 1471.数组中的k个最强值
  • 基于R语言的水文、水环境模型优化技术及快速率定方法与多模型案例实践
  • python的守护线程设置
  • LTC5591IUH#TRPBF 无线和射频集成电路IC ADI亚德诺半导体 电子元器件解析
  • 【数据分享】土地利用shp数据分享-海南
  • 分布式拜占庭容错算法——PBFT算法深度解析
  • 《兔兔秘密花园》情人节密技曝光 输入隐藏指令即可
  • SQuAD:机器阅读理解领域的里程碑数据集
  • qt模型视图架构使用时需要注意什么
  • webRTC golang 开发核心
  • UVa10603 Fill
  • 小说《灵渊纪元:数据重构天道》的深层解读与象征意义分析
  • Android Kotlin 实现微信分享功能
  • Git : 多人协作和企业级开发模型
  • Twitter/X 搜索headers x-client-transaction-id 参数
  • Node.js后端工程师需了解的前端技术:HTML5、JavaScript、CSS、工具(Axios、EJS、 Chart.js)及资源CDN和MDN