• go语言 go mod生成


    1. go hello world

    创建文件夹gotest,在其中创建test1.go文件,并写入

    1. package main
    2. import (
    3. "fmt"
    4. )
    5. func main() {
    6. fmt.Println("hello world")
    7. }

     运行命令

    go run test1.go

    可以看到输出hello world

    2. cli 命令行的使用

    代码如下:

    1. package main
    2. import (
    3. "fmt"
    4. "log"
    5. "os"
    6. "github.com/urfave/cli/v2"
    7. )
    8. func main() {
    9. app := &cli.App{
    10. Name: "hello",
    11. Usage: "hello world example",
    12. Action: func(c *cli.Context) error {
    13. fmt.Println("hello world")
    14. return nil
    15. },
    16. }
    17. err := app.Run(os.Args)
    18. if err != nil {
    19. log.Fatal(err)
    20. }
    21. // fmt.Println("hello world")
    22. }

    运行:go build -o test1

    可能会运行错误,找不到包。此时可以通过生成go.mod文件来管理包

     生成go.mod文件 

    go mod init gotest //其中gotest是go文件所在文件夹的名称 

    注意:

    在上面中,我们通过 go mod init xxx命令生成了go.mod文件之后,这只是一个空的文件, 其中依赖的各种包还没有生成。

    可以使用以下2种命令获取:

    <1> go get 包名 例如:go get github.com/urfave/cli/v2

    如果依赖包比较多,那么 go get 就比较麻烦了。可以使用另外一个命令:

    <2> go mod tidy 这个命令将会扫描所有我们写的.go文件中import到的库包,并生成对应的记录到go.mod文件里。

    2.1 cli.Context

    1. package main
    2. import (
    3. "fmt"
    4. "log"
    5. "os"
    6. "github.com/urfave/cli/v2"
    7. )
    8. func main() {
    9. app := &cli.App{
    10. Name: "hello",
    11. Usage: "hello world example",
    12. Action: func(c *cli.Context) error {
    13. // fmt.Println("hello world")
    14. fmt.Printf("Hello %s", c.Args().Get(0))
    15. return nil
    16. },
    17. }
    18. err := app.Run(os.Args)
    19. if err != nil {
    20. log.Fatal(err)
    21. }
    22. // fmt.Println("hello world")
    23. }

    运行结果:

    c.Args() //可以获取运行命令后的参数列表,是一个切片,cCtx.Args().Get(0)是获取第一个位置的参数,第二个第三个依次类推

    fmt包输出函数

    func Print(a ...interface{}) (n int, err error)

    func Printf(format string, a ...interface{}) (n int err error)

    func Printfln(a ...interface{}) (n int, err error)

     参考:

    https://juejin.cn/post/7098296317394288671

  • 相关阅读:
    二叉树的三种层序遍历BFS
    docker快速入门
    分布式搜索引擎Elasticsearch中各种类型节点的作用
    MySQL数据库触发器
    Apache ShenYu 学习笔记一
    你在前端有做过哪些性能优化
    基于循环神经网络空中目标意图识别实现(附源码)
    5年磨一剑|优酷Android包瘦身治理思路全解
    什么是单向数据流
    VUE 文件导出下载
  • 原文地址:https://blog.csdn.net/guaizaiguaizai/article/details/132489762