每期一个小窍门: 玩转go mod 命令

看完本期小窍门 你将学会

  • go下载/更新 包的命令
  • 如何挎包调用/路径名称约定
  • init()函数的作用和一些细节

本文涉及到的目录结构如下

在这里插入图片描述

关于 go.mod go.sum

这个demo依赖

github.com/bytedance/sonic

可以使用下面两个命令来确保依赖正常加载

go get github.com/bytedance/sonic
go mod tidy

上面两个命令的区别:

  1. go get 会强制下载你想要的任何依赖 不管有没有import
  2. tidy 会检测import 的依赖项, 然后自动删除没有import的依赖, 自动下载有import但是没有本地缓存的依赖
  3. 这两个命令会生成/修改 本地go.mod, 此文件由go自维护, 不需要关心
module test666

go 1.16

require github.com/bytedance/sonic v1.10.0 // indirect

main 函数

main中引用了 一个工具类
这个工具类的 package name = util666
这个工具类的 物理路径是 = test666/util
test666 是自身的mod名称
所以import 规则为: [模块名]/[物理包路径名称]
但是调用的时候: package名称 当然 你也可以使用别名来调用
挎包调用需要大写 方法/变量 首字母

package main

import(
"fmt";
"test666/util";
_ "github.com/bytedance/sonic"
)


func main(){
    
    

 fmt.Println("hello ksl", util666.Name)
 util666.Speak()
}

util类

package util666

import("fmt")

var (
Name="kslname"
)
func Speak() string {
    
    
  fmt.Println("I'm ksl")
  return "I'm ksl return"
}

此时使用调用run方法会成功

  • 未引用的包 使用了 _ 来忽略引用检测告警
go run important/a.go 

关于init 函数

  • init函数 在被import时会自动触发调用
  • 即使使用 _ 忽略import 引用告警, 那也只是忽略了告警本身
    该模块还是会被import, 所以还是会触发init()

猜你喜欢

转载自blog.csdn.net/qq_33709508/article/details/132265831
今日推荐