Go自学遇到的问题记录(一)

LoRaPacketForwarder:LoRa单通道数据包转发器,用于通过Semtech UDP协议v2传输上游数据 适用于Linux的LoRa数据包转发器 单通道LoRa UDP数据包转发器非常适合开发或测试目的。 只能接收LoRa数据并将其上传到一台或多台服务器。 这个项目非常适合DIY,这是最便宜的LoRa“网关”之一,它由单板计算机和一个4美元的LoRa模块组成。 该项目的目标是为以下人员提供简单的LoRa转发器: Linux-OrangePi,RaspberryPi等 对Semtech UDP协议v2的非常基本的支持-上行链路和统计信息物联网-经过测试的V2和V3 基于wirePi和经过修改的LoRaLib / RadioLib(适用于Linux(橙色Pi或Raspberry PI),带有LoRa芯片)的SPI通信: SX126x系列 SX127x系列 RFM9x系列 基本JSON配置文件 如何使用 硬件设定 除了单板计算机(WiFi,以太网...)上的网络连接外,还必须分配设备上的以 立即下载

1. go get命令

使用go自带的go get下载包的时候总是报错,仔细检查了下,其实是自己粗心使用仓库的格式不对

  1. 开头不能有https://
  2. 结尾不能有.git
    正确写法:
go get github.com/easierway/concurrent_map  

这里加 -u 可以强制从网上更新远程依赖

go get -u github.com/easierway/concurrent_map  

2. 报错package xxx is not in GOROOT or GOPATH

原因:
Gopath这个环境变量的作用:

  1. 存放sdk以外的第三方类库
  2. 自己收藏的可复用的代码

go的默认找包方式是在Gopath找,它使用绝对路径提供项目的工作目录,在 GOPATH 指定的工作目录下,代码总是会保存在 $GOPATH/src 目录下
所以很麻烦
Go Modules 是 Go 语言的一种依赖管理方式
没有 GO111MODULE时, go编译程序的查找依赖的顺序 go path > goroot , 有了GO111MODULE后,会读取当前项目的 go.mod. 文件, 在go.mod文件中会记录有哪些依赖

分情况讨论:

GO111MODULE=“off”

解决方法:

go env -w GOPATH=~/project
# 这里设置为 ~/project是因为这个是我的项目文件

go的编译器会在 $GOPATH/src 下面寻找对应的模块,src下的每一个目录都可以对应一个模块,目录中的目录也可以是一个模块

GO111MODULE=“on”
在这种情况下,我们直接调用写好的模块会报错:

main.go:4:2: package module is not in GOROOT (/usr/local/go/src/module)

解决方法:

  • 第一种方法:设置 GO111MODULE=“off” ,然后像上面的那种情况一样设置GOPATH
  • 第二种方法:使用go mod,如下
    在控制台输入
go mod init test
# test可以是任意的名称

然后我们引入模块的时候,以test(初始化时定义)开头,然后接模块路径,比如:

import "test/module"

如果使用这种方式Goland报错,但是可以进行正常编译,那么可以删除当前目录下的 .idea 目录然后重启项目即可

3. 切片的拷贝

切片与数组不同,是指针类型赋值,因此当我们想复制出两个值完全一样而互相赋值不影响的切片时,可以使用copy()方法,这样就只是进行了值的复制

package main

import "fmt"

func main() {
	var a = []int{1, 2, 3}
	// b := a      注意这里不能这样初始化b,不然a和b的地址又是一样的
	b := make([]int, 3) //需要使用make方法重新开辟一段内存

	// b = a    这里如果这样拷贝,b和a还是指向同一块内存空间
	copy(b, a) //使用copy进行值的拷贝
	fmt.Printf("%p \n", b)
	fmt.Printf("%p \n", a)

	b[2] = 6
	fmt.Print(b, a)
}

运行结果:
在这里插入图片描述

4. 获取本机对外IP地址

func GetOutboundIP()(ip string, err error){
	conn, err := net.Dial("udp","8.8.8.8:88")
	if err != nil{
		return
	}
	defer conn.Close()
	localAddr := conn.LocalAddr().(*net.UDPAddr)
	fmt.Println(localAddr.String())
	ip = strings.Split(localAddr.IP.String(),":")[0]
	return 
}

5. 反射

https://studygolang.com/articles/20246

【软件系统架构】系列六:系统工程 系统工程是一种跨学科方法论,用于分析、设计、集成和管理复杂系统的全生命周期。其核心特点包括系统性思维、全周期管理、跨学科协作和需求导向。主流采用V模型生命周期,涵盖需求分析、系统设计、实现、测试验证及运维退役等阶段。核心工作方法包括需求工程、系统建模、接口设计、风险管理等。系统工程与项目管理协同,分别侧重技术实现和进度资源管理。应用领域覆盖航天军工、智能制造、智慧城市等。未来将向AI融合、数字孪生、模型驱动工程等方向发展,为复杂系统开发提供系统化协作范式。 阅读详情

相关推荐

引入包的路径错误 package XXX is not in GOROOT

出现该错误的原因时引入包的路径错误,go在引入包时有其自己的查找方式,如下:在 GOPATH 模式下,执行 go build 或 go run 时,在 vendor 目录、GOPATH 目录、GOROOT 目录都可能存在依赖库(标准库、第三方库等),将依次按照如下的目录过程寻找引用的依赖:1.在当前目录下的 vendor 目录查找依赖的 package2.当前目录不存在 vendor 目录,则去上一级目录寻找3.重复步骤 2 直到进入 $GOPATH/src 目录。

m0_69254007的博客 4402

别再用UE5默认材质:用Substance Painter一招提升写实感

今天,我就把这套从模型准备到引擎最终呈现的全流程技巧毫无保留地分享出来,这套方法不仅能让你的作品细节炸裂,更能让你理解次世代PBR(Physically Based Rendering)材质的底层逻辑。

海外旅居设计师,15年设计经验。 1326

Go代码引入自己创建的包,运行时出现 package 包路径 is not in GOROOT 问题

Go代码引入自己创建的包,运行时出现 package 包路径 is not in GOROOT 问题 E:\studyCode\code\go_project\src\go_code\20211123\factory\main>go run main.go main.go:5:2: package go_code/20211123/factory/model is not in GOROOT (E:\progranfiles\go\src\go_code\20211123\factory\mode

XCL0602的博客 6786

告别F5失灵!手把手教你为Cursor配置.Net Core控制台项目专属调试环境

本文详细指导如何在Cursor编辑器中为.Net Core控制台项目配置专属调试环境,解决F5失灵等常见问题。从调试器选择到launch.json配置,再到高级调试技巧,帮助开发者高效搭建完整的调试工具链,提升开发效率。

weixin_28834765的博客 288

Unity3D赛车游戏+脚本基础

本章主要介绍Unity的基础开发流程以及涉及到的概念。这个过程需要我们学会编写一些游戏脚本,在这讲的过程中我们会完成一个赛车小游戏,因此,在讲述这些基本概念和流程的时候,会同时涉及到一点脚本的开发基础.在游戏,电影和动画中,都有一个渲染的帧率,电影是24帧/s,游戏大概是30帧/s(当然也有60帧/s的)。在unity里面1秒钟,Update方法执行了30次。1秒钟有30帧,帧与帧之所消耗的时间是不一样的,那么我如何知道上一帧用了多少时间?Time.deltaTime就是为了解决这个问题。

m0_58367586的博客 7660

Golang自定义包引入的坑(提示xxx is not in GOROOT)

坑1:win10系统下设置好GOPATH后,运行代码报错: main.go:4:2: package 01_func_demo/utils is not in GOROOT (D:\Golangenvr\src\01_func_demo\utils) main.go:4:2: package 01_func_demo/utils is not in GOROOT (D:\Golangenvr\src\01_func_demo\utils) go env发现GO111MODULE不是on状态,也不是off,

m0_46351795的博客 1362

张正友标定法-MATLAB实验

该方法最早由微软研究院的Zhengyou Zhang教授提出,1998年发表在IEEE TRANSACTIONS ON PATTERNANALYSIS AND MACHINE INTELLIGENCE,论文题目为:AFlexible New Technique for Camera Calibration。 (一)标定平面到图像平面的单应性 单应性(homography):在计算机视觉中被定义

qq_37845624的博客 8290

package ... is not in GOROOT (/usr/local/go/src/...)

package … is not in GOROOT (/usr/local/go/src/…) 进入当前目录, 在命令行或goland终端输入 go env //查看配置信息 第一行显示 set GO111MODULE=on / off 如果是 on ,则输入 go init mod //你会发现多了一个 go.mod文件 刚入门golang,自己使用这个方法解决了这个问题。 ...

bossshp的博客 1万+

【系统架构设计师-2023年真题】综合知识-答案及详解

要实现多任务间的协同工作,操作系统必须提供任务间的通信手段。嵌入式操作系统一般都会提供多任务间通信的方法,其中()是任务间最直接、最明显的通信方法,也是访问共享的数据结构,即不同的任务都可以访问同一地址空间。()作为一种更高级的通信方式,能够在同一处理器的各个任务间传递任意长度(理论上只受物理内存和机器字长限制)的信息。(1)A. 共享内存 B. Socket C. 消息传递 D. 信号量(2)A. 共享内存 B. Socket C. 消息传递 D. 信号量【答案】A、C关于星型拓扑结构,下列说法正确的是(

数据知道的博客 1万+

(十二)深入理解蓝牙BLE之“移植Bluez 5.18源码到嵌入式平台”

在某嵌入式平台进行蓝牙开发,发现上面居然没有btmon,hciattach,hcitool等蓝牙调试工具,无奈之下,只好移植bluez协议栈到目标嵌入式平台,建议移植5.18版本(最新的5.54版本居然hcitool等工具不是默认编译的,需要修改Makefile才可以)。 看到很多讲解移植过程的文章都是需要积分的,觉得写一篇免积分的文章还是有些意义的,欢迎同行来交流。 移植环境:Linux ubuntu 目标平台:sigmastar 星宸科技 配置交叉编译工具链:export PATH=$PATH:

2966

go语言获取对外ip地址

go语言获取对外ip地址

dx1313113的博客 2895

顶级AI大模型白嫖ChatGPT Plus1个月,0成本薅顶配功能

Chat*** Plus限时免费1个月!原价20美元/月的顶配功能

BUG猿的博客 7298

Go语言自学系列 | 汇总

视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,请移步至知乎网站,谢谢支持! 1 Go语言自学系列 | golang简介 - 知乎 (zhihu.com) 2 Go语言自学系列 | 安装Golang - 知乎 (zhihu.com) 3 golang开发工具 4 第一个golang应用 5 go常用命令 6 golang开发vscode快捷键 7 如何编写golang代码

团爸讲算法 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【golang自学之路(三)】go-web快速开发脚手架搭建

golang做web开发搭建快速脚手架:1.采用gin框架+gorm框架负责resful+mysql2.缓存采用go-redis3.日志选择zap4.配置采用vipergolang web脚手架项目采用CLD分层理念Controller:服务的入口,负责处理路由、参数校验、请求转发。:逻辑(服务)层,负责处理业务逻辑。**DAO/Repository:**负责数据与存储相关功能。区别于java框架常用的MVC框架,CLD更好的杜绝了Model层在处理业务逻辑时的臃肿。

qq_42961251的博客 2674

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【入门自学golang】go语言基础

入门自学golang笔记 目录入门自学golang笔记环境搭建以及配置包管理三级目录 环境搭建以及配置 1、环境搭建和配置就不记录了 2、常用命令 go run main.go :本地运行命令 go build main.go:生成执行文件 go install main.go : 生成可执行文件在/bin文件夹内 ,若是文件包则会生成包文件在/pkg内 包管理 总结: 1、 一个文件夹可以称为一个包 2、一个文件夹(包)内可以创建多个文件 3、在同一个包内的文件文件中必须制定 包名称相同 包的分类:

isjier的博客 1307

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

golang自学笔记

本文是我这半年来自学golang的学习笔记

kobayashiii的博客 1482

GoLang学习笔记 | 解决vscode中安装go tools和golint失败的问题 | 百度云链接

---恢复内容开始--- 最近自学 Golang 使用 vscode 特此记录 1.安装bash 电脑装有 git ,git自带一个 bash,所以 只要把 bash.exe配置环境path里面:目录 打到 bin即可。%GITHOME%\bin 2.安装 插件 由于golang.org被墙,采用github方式从远端拉取 git clone https://git...

anliu1687的博客 1211

golang从入门到放弃【一】

​ 记录一下Go语言自学过程中的笔记。

xiaoxiaohen2的博客 1223

自学go项目一

bluebell项目自学及踩坑

qq_41293000的博客 1101

Go语言自学笔记(0-1.2)

后续参考引用会尽量表明,*“斜体”*代表直接引用书中内容,其他引自互联网的内容会特别标注。本人学生阶段疏于学习,水平有限,学习过程中的一些奇奇怪怪的疑问会记录成Q&A的形式,A一般是从AI那得到的答案。“Go语言有时候被描述为“类C语言”,或者是“21世纪的C语言”。“正如。

weixin_42697921的博客 671

Go语言自学记录(一)

以下内容都是跟着菜鸟教程学习总结,都是一些基本知识吧。 1、Go环境安装 网址:https://golang.org/dl/ 菜鸟教程也指出,如果上面的网址打不开也可以使用如下地址:Downloads - The Go Programming Language 因为我是Windows系统,所以选择了如下安装包,教程中给的是下载.msi文件进行安装,为了省区安装过程,我选择了直接下载.zip文件 完成下载后解压.zip文件,将解压后文件内的 bin 目录的完整路径添加到环境变量的Path中。 打开

weixin_41804479的博客 139

初学Golang的自学笔记(持续更新)

初学Golang的错误笔记(持续更新) 前言 第一次写博客也第一次自学一门语言,之所以选择了Golang。是觉得这是一门比较新的语言,可以从这门语言来开始比较各语言的不同也给自己以后学习其他语言有一个可以借鉴的经验。这个博客是我学习Golang时的,自己犯下的错误的整理也会写一些自己学习Golang的心得体会以及对Golang的理解吧!! 项目场景: 编译器:Vscode2020 语言:Golang 2020年9月22日(For,函数语句等的中括号) 问题描述: 在Vscode2020下,用Golang来

thtglut的博客 464

Go 专栏|错误处理:defer,panic 和 recover,2024大厂Golang面试题精选

错误处理在开发过程中至关重要,好的错误处理可以使程序更加健壮。而且将错误信息清晰地记录日志,在排查问题时非常有用。Go 中使用error类型进行错误处理,还可以在此基础上自定义错误类型。使用defer语句进行延迟调用,用来关闭或释放资源。使用panic和recover来抛出错误和恢复。使用panic一般有两种情况:程序遇到无法执行的错误时,主动调用panic结束运行;在调试程序时,主动调用panic结束运行,根据抛出的错误信息来定位问题。为了程序的健壮性,可以使用recover。

2401_84301418的博客 1106

Golang 必知必会Go Mod命令

通过以上可以轻松了解在Golang中gomod的使用方式。Gomod提供了一系列操作modules的命令,所有的go命令中现在已经内置了对module的支持,而不仅仅是gomod命令。例如使用goget时,会经常自动在后台添加、移除、升级、降级依赖包版本。希望这个博客能对你有所益处。我是轻王,我为自己代言。先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。...

m0_67401228的博客 493

Golang学习笔记(一)

(文章持续更新中...有志同道合的人可以一起探讨下。整个系列(1~8)准备重写,不过都是很基础的入门笔记,想学到很深入的东西则不建议阅读...) 自学的前端开发,野生程序员,从最初的小白到可以独立完成前后端项目,从域名购买解析到服务器部署,都亲自实践过。最近想着找准方向沉淀下自己。定下了主攻前端,业余研究Golang的小目标,至此开始记录自己的学习历程。 题外话:因为属于自学的,从最初服务器都不...

weixin_34192816的博客 174
上一篇: 【数据集处理】生成voc格式数据集
下一篇: etcd的使用(GO)
Andy in boots
博客等级 码龄7年 73粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值