Golang 基础 环境配置和包管理

Golang 基础环境和语法

交叉编译

windows 下打包 linux 的运行程序。

设置变量

set GOARCH=amd64
set GOOS=linuxgo build

取消变量

set GOARCH=
set GOOS=

显示变量

set GO

go test

当go test以包列表模式运行时,go test会缓存成功的包的测试结果以避免不必要的重复测试。当然,有时候我们测试的时候并不喜欢有缓存,我们可以手动禁用缓存。可以通过下列方式禁用缓存:

带上 -count=1 参数禁用缓存。

如,执行下面命令测试,便会禁用缓存测试结果

go test -v -count=1 filename_test.go

手动清除测试缓存
除了在执行测试命令的时候加上禁用缓存参数,我们还可以执行下面的命令手动清除缓存,需要注 意的是,每次都得清除,不然下次执行的还是上次的结果。

go clean -testcache

VsCode setting.xml 配置

{"go.testFlags": ["-v","-count=1"],
}

映射

使用make声明映射

创建一个映射,键的类型是string,值的类型是int

dict := make(map[string]int)

创建一个映射,键和值的类型都是string,使用两个键值对初始化映射

dict := map[string]string{"Red":"#da1337","Orange":"#e95a22"}

声明一个存储字符串切片的映射,使用字符串切面作为值

dict := map[int][]string{}

类型的本质

内置类型

  • 数值类型
  • 字符串类型
  • 布尔类型

引用类型

  • 切片
  • 映射
  • 通道
  • 接口
  • 函数类型

Go 语言里的引用类型有如下几个:切片、映射、通道、接口和函数类型。当声明上述类型
的变量时,创建的变量被称作标头(header)值。从技术细节上说,字符串也是一种引用类型。
每个引用类型创建的标头值是包含一个指向底层数据结构的指针。每个引用类型还包含一组独特
的字段,用于管理底层数据结构。因为标头值是为复制而设计的,所以永远不需要共享一个引用
类型的值。标头值里包含一个指针,因此通过复制来传递一个引用类型的值的副本,本质上就是
在共享底层数据结构。

结构类型

结构类型可以用来描述一组数据值,这组值的本质即可以是原始的,也可以是非原始的。如
果决定在某些东西需要删除或者添加某个结构类型的值时该结构类型的值不应该被更改,那么需
要遵守之前提到的内置类型和引用类型的规范。

包管理

  • Go Mod
  • Go Vendor
  • Go dep
  • Go Modules

Go Modules 使用本地包

Go Modules下使用本地包 https://www.cnblogs.com/dexte/p/12337220.html

方式一(推荐)

严格的说,方式一是使用项目目录下的go文件。
项目目录如下:

【如下所示, 搜文件树模式编写表示】

└─ studyModule //项目主目录├─ log //主目录下文件夹│  └─ log.go // log目录下go文件├─ main.go // 主目录下go文件└─ go.mod

log.go 中首行 package log,注意,log文件夹下不要 go mod init,否则会导致无法编译

  1. studyModule文件夹下 go mod init sts
  2. main.go 中调用 log.go中的方法:import "sts/log"-> 此处为主目录下的mod名下边的log文件夹
  3. log目录下的方法,变量等依然需要大写。如果不能正常使用可尝试在主目录下执行 go mod tidy

方式二(使用go mod replace)

└─studyModule //项目主目录└─4fan.top //主目录下文件夹│  └─DY│     ├─DYlogger@v1.1.0│     ├─ *.go│     └─go.mod【2】├─main.go // 主目录下go文件└─go.mod【1】
  • go.mod【2】:Module Name:DYlogger
  • go.mod 【1】:
require 4fan.top/DY/DYlogger v1.1.0
replace 4fan.top/DY/DYlogger => ./4fan.top/DY/DYlogger@v1.1.0

main.go中: import "4fan.top/DY/DYlogger"

说明:go mod是一个理想化的包管理工具,因此版本在go mod中很重要。(semver(语义化版本号))

go.mod 【1】中的require最好指明版本 对于文件名名字以及mod文件中的版本号码,未测试在其它情况下是否生效,请自行测试。

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

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

相关文章

PKI - 借助Nginx 实现Https 服务端单向认证、服务端客户端双向认证

文章目录 Openssl操系统默认的CA证书的公钥位置Nginx Https 自签证书Nginx Https 使用CA签发证书客户端使用自签证书供服务端验证客户端使用 根证书 签发客户端证书 供服务端验证 Openssl https://www.openssl.net.cn/ openssl是一个功能丰富且自包含的开源安全工具箱。 它提…

2024腾讯云游戏服务器租用多少钱一年?

2024年更新腾讯云游戏联机服务器配置价格表,可用于搭建幻兽帕鲁、雾锁王国等游戏服务器,游戏服务器配置可选4核16G12M、8核32G22M、4核32G10M、16核64G35M、4核16G14M等配置,可以选择轻量应用服务器和云服务器CVM内存型MA3或标准型SA2实例&am…

(44)公因子的数目

文章目录 每日一言题目解题思路法一:法二: 代码法一:法二: 结语 每日一言 懒惰行动得如此缓慢,贫穷很快就能超过它。——富兰克林 题目 题目链接:公因子的数目 给你两个正整数 a 和 b ,返回 a 和 b 的 公 因子的数目…

在centos7中利用pybind11构建C++的动态库供python调用

在centos7中利用pybind11构建C的动态库供python调用 步骤 1:安装依赖步骤 2:获取 pybind11 头文件步骤 3:编写绑定代码步骤 4:编译动态库步骤 5:在 Python 中调用编译命令解释注意 需求:在 CentOS 7 中&…

Python - 构建多语言情感分析应用

在开发使用 Flask 构建的 Web 应用时,有时需要处理不同语言的情感分析。这个示例将展示如何同时处理英文和中文文本的情感分析,并使用 TextBlob 和 SnowNLP 这两个库实现。 英文情感分析 首先,我们有一个名为 __init__.py 的 Flask 应用处理英文情感分析。它接收 POST 请求…

画出TCP三次握手和四次挥手的示意图,并且总结TCP和UDP的区别

三次握手 第一次握手:客户端发送SYN包(SYN1, seq0)给服务器,并进入SYN_SENT状态,等待服务器返回确认包。第二次握手:服务器接收到SYN包,确认客户端的SYN,发送ACK包(ACK1 …

在虚拟机上搭建CentOS环境并配置静态IP

在虚拟机上搭建CentOS环境并配置静态IP 在进行Linux系统的学习和实践时,搭建一个本地的CentOS环境是一个非常好的方式。本文将介绍如何使用虚拟机(VM)搭建CentOS环境,并配置静态IP,以便更好地进行网络管理和测试。 步…

项目学习记录

项目开发 创建项目环境配置关联git新增模块项目启动打印地址日志使用httpclient进行idea内部控制台测试使用AOP拦截器打印日志 创建项目 创建一个空项目,并勾选下面选项 然后进入pom.xml中修改项目配置 根据这个链接选则,修改项目的支持版本 链接&#…

TCP和UDP相关问题(重点)——7.TCP的流量控制怎么实现的?

流量控制就是在双方通信时,发送方的速率和接收方的速率不一定是相等的,如果发送方发送的太快,接收方就只能把数据先放到接收缓冲区中,如果缓冲区都满了,那么处理不过来就只能丢弃,所以需要控制发送方的速率…

供应链|Managemeng Science 论文解读:数据驱动下联合定价和库存控制的近似方法 (一)

编者按 本次解读的文章发表于 Management Science,原文信息:Hanzhang Qin, David Simchi-Levi, Li Wang (2022) Data-Driven Approximation Schemes for Joint Pricing and Inventory Control Models. https://doi.org/10.1287/mnsc.2021.4212 文章在数…

精通Python爬虫:掌握日志配置

源码分享 https://docs.qq.com/sheet/DUHNQdlRUVUp5Vll2?tabBB08J2 在开发Python爬虫时,日志记录是一个不可或缺的特性,它帮助我们捕捉运行时信息、调试代码和监控爬虫的健康状况。合理地配置日志系统是提高爬虫可维护性的关键。本篇技术博客将详细介绍…

测试管理_利用python连接禅道数据库并自动统计bug数据到钉钉群

测试管理_利用python连接禅道数据库并统计bug数据到钉钉 这篇不多赘述,直接上代码文件。 另文章基础参考博文:参考博文 加以我自己的需求优化而成。 统计的前提 以下代码统计的前提是禅道的提bug流程应规范化 bug未解决不删除bug未关闭不删除 db_…

闭区间上连续函数的性质【高数笔记】

1. 分几个性质 2. 每个性质的注意事项是什么 3. 每个性质适用什么类型的题型 4. 注意最值定理和正弦函数的不同 5. 做题步骤是什么

Web前端框架-Vue(初识)

文章目录 web前端三大主流框架**1.Angular****2.React****3.Vue**什么是Vue.js 为什么要学习流行框架框架和库和插件的区别一.简介指令v-cloakv-textv-htmlv-pre**v-once**v-onv-on事件函数中传入参数事件修饰符双向数据绑定v-model 按键修饰符自定义按键修饰符别名v-bind(属性…

Swift 使用 Combine 进行开发 从入门到精通七

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

DMA直接内存访问,STM32实现高速数据传输使用配置

1、DMA运用场景 随着智能化、信息化的不断推进,嵌入式设备的数据处理量也呈现指数级增加,因此对于巨大的数据量处理的情况时,必须采取其它的方式去替CPU减负,以保证嵌入式设备性能。例如SD卡存储器和音视频、网络高速通信等其它情…

IPMI命令

AMI BMC IPMI命令 sysadmin superuser 命令基本格式 [前缀] -I lanplus ipmitool -H 127.0.0.1 -U admin -P admin ipmitool -H 127.0.0.1 -U admin -P admin raw 0x06 0x52 0x07 0xa0 0x10 0x00 0x00 ipmitool -H 127.0.0.1 -U admin -P admin raw 0x06 0x52 0x07 0xa0 0x00…

排序算法的时间复杂度存在下界问题

对于几种常用的排序算法,无论是归并排序、快速排序、以及更加常见的冒泡排序等,这些排序算法的时间复杂度都是大于等于O(n*lg(n))的,而这些排序算法存在一个共同的行为,那就是这些算法在对元素进行排序的时候,都会进行…

Visual Studio 2010+C#实现信源编码

1. 要求 本文设计了一套界面系统,该系统能够实现以下功能: 克劳夫特不等式的计算,并且能够根据计算结果给出相应的信息。可通过用户输入的初始条件然后给出哈夫曼编码以及LZ编码,结果均通过对话框来显示哈夫曼编码结果包含相应的…

2024.1.31力扣每日一题——找出不同元素数目差数组

2024.1.31 题目来源我的题解方法一 哈希表前后缀 题目来源 力扣每日一题;题序:2670 我的题解 方法一 哈希表前后缀 从左到右计算前缀数组pre[i]表示nums[0,i]的不同元素个数; 从右到左计算后缀suff[i]表示nums(i,nums.length]的不同元素个…