良许Linux教程网 干货合集 Go初学者踩坑之go mod init与自定义包的使用详解

Go初学者踩坑之go mod init与自定义包的使用详解

go mod是go的一个模块管理工具,用来代替传统的GOPATH方案,下面这篇文章主要给大家介绍了关于Go初学者踩坑之go mod init与自定义包的使用,需要的朋友可以参考下

image-20221118211431509

前言

入门很容易的 hello world, 到使用自定义包算一个小的进步,然而在使用上竟然浪费了不少时间,上网查了半天,才解决问题.

第一明确 是哪种方式,是go mod 方式 还是 go path 方式, 请自己查一下,本小文直说go mog 方式的小问题.

首先看一下 文档结构

Go初学者踩坑之go mod init与自定义包的使用详解Go初学者踩坑之go mod init与自定义包的使用详解

我自己写了个 ToolKit.go, 内容大致如下:

问题是:怎么引用它

//for all kind of tools
package Toolkit
 
import (
    "net/http"
    "strings"
)
 
 
func Left(str string, cnt int) string {
    l := strings.Count(str, "")
    if cnt >= l {
        cnt = l - 1
    } else if l return str[0:cnt]
}
...

引用方式各种出错,举例如下:

package main
import (
    "testing"
    "ToolKit"
)

或者:

package main
import (
    "testing"
    "./ToolKit"
)

或者

package main
import (
    "testing"
    "/usr/local/src/go/iot_watcher/ToolKit"
)

我能想到的方法都用到了,还是不行.

下面直接给出解决方案吧

查看 go.mod,内容如下

module iot_watcher.com
 
go 1.17

OK, 把 module 后面那个东西考下来, 写成这样

ackage main
 
import (
    "testing"
    "iot_watcher.com/ToolKit"
)

就没问题了.

为了方便,写成别名引用方式

package main
 
import (
    "testing"
     
    ToolKit "iot_watcher.com/ToolKit"
)

补充: 终于明白 go mod init anyName.com

这个anyName.com 东西的用途了(一点儿用途)

说实话, 我最讨厌这种几乎一点儿含金量都没有的系统配置了. 从微软的MFC 到go , 真是无奈.浪费大量时间.

补充:go mod init出错

go mod init出错,错误提示如下:

go: cannot determine module path for source directory D:\workspace\go (outside GOPATH, no import comments)

解决办法:添加模块名参数

go mod init module_name

例如,在test目录下,即test模块,就用

go mod init test

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部