Go语言之十条命令(The Ten Commands of Go Language)

Go语言之十条命令

Go语言简介

 Go语言(又称Golang)‌是由Google开发的一种开源编程语言,首次公开发布于2009年。Go语言旨在提供简洁、高效、可靠的软件开发解决方案,特别强调并发编程和系统编程‌。

Go语言的基本特征

  1. 静态强类型‌:Go语言在编译阶段确定每个变量的数据类型,并且在后续的代码中不允许改变这个数据类型‌。

  2. 编译型语言‌:代码在执行前需要经过编译过程,编译器将源代码转换成机器可执行的低级指令‌。
  3. 并发支持‌:Go语言提供了强大的并发编程支持,能够有效地利用多核与联网的计算机‌。
  4. 垃圾回收‌:Go语言具有方便的垃圾收集机制,减少了内存管理的复杂性‌。
  5. 运行时反射‌:Go语言支持运行时反射,使得在运行时动态地调用对象的方法和访问对象的属性成为可能‌。

Go语言的应用场景

Go语言广泛应用于以下领域:

  • 网络编程‌:Go语言提供了强大的网络编程支持,适合开发高性能的网络服务‌。
  • 系统编程‌:由于其底层操作系统的访问能力,Go语言常用于系统编程和分布式系统开发‌。
  • 并发编程‌:Go语言的并发机制使得它非常适合处理高并发场景,如游戏服务器端开发‌。

Go语言的发展历史

Go语言的开发始于2007年,由Google的Robert Griesemer、Rob Pike和Ken Thompson等人设计。2009年,Go语言正式对外发布。自发布以来,Go语言经历了多次版本更新,不断引入新特性,如模块系统、泛型支持等,进一步提升了其性能和开发效率‌。

Go设置的相关命令。

1.设置GoProxy国内镜像。

$ go env -w GO111MODELE=on$ go env -w GOPROXY=https://goproxy.cn,direct

2.查看依赖项。

  • 列出当前模块及其所有直接和间接依赖模块

$ go list -m all

解析:

  • 当你运行此命令时,它会显示所有依赖模块的模块路径、版本号等信息。

  • 该命令可以帮助开发者了解项目中的所有依赖情况。

    输出示例:

example.com/myproject v0.1.0golang.org/x/tools v0.1.5github.com/stretchr/testify v1.7.0

3.查看当前依赖可用版本。

$ go list -m -versions github.com/gin-gonic/gin

4.下载依赖。

$ go get github.com/gin-gonic/gin@1.8.0

5.查看依赖图。

  • 显示模块的依赖图,以文本方式展示当前模块依赖关系

$ go mod grph

解析:

  • 该命令会输出当前模块依赖树的详细信息,包括每个模块和它的依赖模块。

  • 格式为 <module1>@<version1> <module2>@<version2>,表示模块1依赖模块2。

  • 这个命令主要用于了解项目中依赖的复杂性,以及发现潜在的循环依赖或版本冲突。

    输出示例:

example.com/myproject@v0.1.0 golang.org/x/tools@v0.1.5golang.org/x/tools@v0.1.5 golang.org/x/mod@v0.3.0

6.整理依赖。

  • 清理 go.mod 文件,移除未使用的依赖,添加遗漏的依赖。

$ go mod tidy
7.升级某个包。
  • 升级到最新的次要版本或者修订版本。

$ go get -u 
  • 升级到最新的修订版本。

$ go get -u=patch

解析:

  • go get -u 会更新模块到最新的次版本或修订版本,不会跨越主版本。

  • go get -u all 会更新所有模块,而指定模块名如 golang.org/x/tools 则仅更新该模块。

  • 更新后,go.mod 和 go.sum 文件会相应地发生变化。

8.replace使用。
  • 仓库是project-A,但是代码仓库go.mod中设置的是github.com/A。

$ go mod edit -replace github.com/A=github.com/project-A@v1.0.0
9.单元测试命令。
  • 所有在包目录中,以_test.go为后缀的源码文件都会b被go test运行到。

  • 不用担心_test.go源码文件内容过多,因为go build命令不会j将这些测试文件打包到最后的可执行文件中。

$ go test
10.性能单元测试命令。
$ go test -bench=".*"

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

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

相关文章

创建基本的 Electron 应用项目的详细步骤

创建一个基本的 Electron 应用项目的详细步骤。我们将从安装 Node.js 开始&#xff0c;然后创建项目文件夹并初始化 Electron 项目。 1. 安装 Node.js 首先&#xff0c;确保你已经安装了 Node.js 和 npm。你可以在终端中运行以下命令来检查是否已经安装&#xff1a; node -v…

「scipy、eeg」使用python scipy butter filtfilt 分解EEG数据为5个频带和滤波参数选择

使用scipy butter filtfilt 分解EEG数据和滤波参数选择 【目录】 EEG数据频带和滤波参数滤波类型及示例Pyhton 代码实现 一、EEG数据频带和滤波参数 二、滤波类型 低通滤波&#xff08;lowpass)高通滤波&#xff08;highpass&#xff09;带通滤波&#xff08;bandpass&…

网络传输层TCP协议

传输层TCP协议 1. TCP协议介绍 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一个要对数据的传输进行详细控制的传输层协议。 TCP 与 UDP 的不同&#xff0c;在于TCP是有连接、可靠、面向字节流的。具体来说&#xff0c;TCP设置了一大…

深度学习第三弹:python入门与线性表示代码

一、python入门 1.熟悉基础数据结构——整型数据&#xff0c;浮点型数据&#xff0c;列表&#xff0c;字典&#xff0c;字符串&#xff1b;了解列表及字典的切片&#xff0c;插入&#xff0c;删除操作。 list1 [1, 2, 3, 4, 5] for each in list1:print(each) print(list1[1…

【Linux】shell脚本编程

目录 概念&#xff1a; shell脚本的本质&#xff1a; shell脚本编程&#xff1a; shell变量&#xff1a; 变量的定义格式&#xff1a; 变量的分类 自定义变量&#xff1a; 环境变量&#xff1a; 命令变量与命令行参数&#xff1a; 预定义变量&#xff1a; shell中的…

Onedrive精神分裂怎么办(有变更却不同步)

Onedrive有时候会分裂&#xff0c;你在本地删除文件&#xff0c;并没有同步到云端&#xff0c;但是本地却显示同步成功。 比如删掉了一个目录&#xff0c;在本地看已经删掉&#xff0c;onedrive显示已同步&#xff0c;但是别的电脑并不会同步到这个删除操作&#xff0c;在网页版…

CSS——1.优缺点

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><link rel"stylesheet" type"text/css" href"1-02.css"/></head><body><!--css&#xff1a;层叠样式表…

软件23种设计模式完整版[附Java版示例代码]

一、什么是设计模式 设计模式是在软件设计中反复出现的问题的通用解决方案。它们是经过多次验证和应用的指导原则,旨在帮助软件开发人员解决特定类型的问题,提高代码的可维护性、可扩展性和重用性。 设计模式是一种抽象化的思维方式,可以帮助开发人员更好地组织和设计他们…

(2023|NIPS,LLaVA-Med,生物医学 VLM,GPT-4 生成自指导指令跟随数据集,数据对齐,指令调优)

LLaVA-Med: Training a Large Language-and-Vision Assistant for Biomedicine in One Day 目录 LLaVA-Med: Training a Large Language-and-Vision Assistant for Biomedicine in One Day 0. 摘要 1. 简介 2. 相关工作 3. 生物医学视觉指令数据 4. 将多模态对话模型适配…

深入理解Mybatis原理》MyBatis的sqlSessi

sqlSessionFactory 与 SqlSession 正如其名&#xff0c;Sqlsession对应着一次数据库会话。由于数据库会话不是永久的&#xff0c;因此Sqlsession的生命周期也不应该是永久的&#xff0c;相反&#xff0c;在你每次访问数据库时都需要创建它&#xff08;当然并不是说在Sqlsession…

Numpy数组的属性

NumPy中最重要的一个特点就是其n维数组对象&#xff0c;即ndarray(别名array)对象&#xff0c;该对象具有矢量算术能力和复杂的广播能力&#xff0c;可以执行一些科学计算。不同于Python内置的数组类型&#xff0c; array对象拥有对高维数组的处理能力&#xff0c;这也是数值计…

(十)提示词任务分解的策略探讨

&#x1f4e2;&#x1f4e2;&#x1f4e2; 大家好&#xff0c;我是云楼Yunlord&#xff0c;CSDN博客之星人工智能领域前三名&#xff0c;多年人工智能学习工作经验&#xff0c;一位兴趣稀奇古怪的【人工智能领域博主】&#xff01;&#xff01;&#xff01;&#x1f61c;&#…

01 数据分析介绍及工具准备

数据分析介绍及工具准备 一、工具准备二、下载和使用Anaconda三、jupyter notebook常用快捷键 一、工具准备 数据科学库 NumPy&#xff0c;SciPy&#xff0c;Pandas&#xff0c;Scikit-Learn 数据可视化库 Matplotlib&#xff0c;Seaborn 编译器 Jupyter Notebook 数据科…

excel表格二维X、Y坐标散点图

excel中存在两列或两行数据&#xff0c;分别表示x坐标和对应的y坐标&#xff0c;同时选中两列或两行数据&#xff1a; 依次选择菜单&#xff0c;插入&#xff0c;图标&#xff0c;XY散点图 可以看到在表格中生成了以第1列为X轴&#xff0c;第2列为Y轴的二维XY散点图&#xff…

Cursor无限续杯——解决Too many free trials.

前情提要 我们都知道Cursor对新用户是有14天且500条免费限制的。 一般情况下&#xff0c;当14天过期&#xff0c;是可以注销账户再重新注册&#xff0c;这样就可以继续拥有14天的体验时长。 但是&#xff01;&#xff01;如果使用超过500次&#xff0c;Cusor就会把你的电脑I…

HCIE-day10-ISIS

ISIS ISIS&#xff08;Intermediate System-to-Intermediate System&#xff09;中间系统到中间系统&#xff0c;属于IGP&#xff08;内部网关协议&#xff09;&#xff1b;是一种链路状态协议&#xff0c;使用最短路径优先SPF算法进行路由计算&#xff0c;与ospf协议有很多相…

洛谷P1617———数字转英文

题目如下 思路&#xff1a;将1~9的英文和20~90的英文用字符串数组存储&#xff0c;把下标看作对应的数字进行输出&#xff0c;遇到0或连续多个0就输出“and”&#xff0c;定义l用来看枚举到哪一位了&#xff0c;如果是单独输入一个“0”&#xff0c;则直接输出zero然后结束。否…

UnityRenderStreaming使用记录(五)

UnityRenderStreaming不一样的错误&#xff0c;船新的版本 继续docker部署UnityRenderStreamingdockerfile一些命令出现了新的错误先解决一个报错不知道怎么解决&#xff0c;先跑个glxgears测试一下先解决MESA和glx的问题新的log&#xff0c;额新的错误尝试解决libnvidia-encod…

Unity-Mirror网络框架-从入门到精通之AdditiveScenes 示例

文章目录 前言Additive Levels和Additive ScenesAdditive Levels场景介绍Portal传送门FadeInOut特效 Additive Scenes示例介绍ZoneHandlerSceneMassage 最后 前言 在现代游戏开发中&#xff0c;网络功能日益成为提升游戏体验的关键组成部分。Mirror是一个用于Unity的开源网络框…

Mac-docker配置

1.配置的文件路径 cd ~/.docker (base) zhangyaweimacbookair .docker % ls buildx cli-plugins config.json contexts daemon.json desktop-build mutagen run (base) zhangyaweimacbookair .docker % cat daemon.json## 重启docker服务 sudo systemctl daemon-reload sudo…