阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

82次阅读
没有评论

共计 1128 个字符,预计需要花费 3 分钟才能阅读完成。

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

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

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

首先看一下 文档结构

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 

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

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

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计1128字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中