zoukankan      html  css  js  c++  java
  • go编译安装一个可执行运用(windows系统)

    在GOPATH下面的src文件夹下创建一个myapp文件夹,创建一个文件Sqrt.go

    package myapp
    
    func Sqrt(x float64) float64 {
        z := 0.0
        for i := 0; i < 1000; i++ {
            z -= (z*z - x) / (2 * x)
        }
        return z
    }

    一般package的名称和目录名保持一致.

    cmd进入myapp执行go install,然后执行go install mymath,会发现在pkg文件夹下面会生成一个myapp.a的文件(如果命令遇到问题可以检查下自己GOPAT还有GOROOT是否配载正确)

    调用myapp下面的Sqrt:

      创建应用包mathapp,在应用包下面创建main.go文件,代码如下

    package main
    
    import (
        "myapp"
        "fmt"
    )
    
    func main() {
        fmt.Printf("Hello, world.  Sqrt(2) = %v
    ", mymath.Sqrt(2))
    }

    这个的package是main,import里面调用的包是myapp,这个就是相对于$GOPATH/src的路径,如果是多级目录,就在import里面引入多级目录,如果你有多个GOPATH,也是一样,Go会自动在多个$GOPATH/src中寻找。

    编译:进入mathapp目录输入go build ,会在mathapp下面增加一个可执行文件mathapp

    安装:进入mathapp目录输入go install 然后运行mathapp

    输入

    Hello, world.  Sqrt(2) = 1.414213562373095
    (这里可能会遇到问题,显示go:cannot find main module:see 'go help modules',出现这个问题是因为之前我设置过set GO111MODULE=on,使得go默认管理依赖的方式变成了go module模式,既依赖go.mod文件,而目录中没有go.mod文件所以go无法编译


    GO111MODULE = on 在1.11&1.12版本不管在GOPATH 中还是外,都强制使用go.mod     1.13版本不管在GOPATH 中还是外,都强制使用go.mod
    GO111MODULE = off 在1.11&1.12版本强制 Go 表现出 GOPATH 方式,即使在 GOPATH 之外   1.13版本强制 Go 表现出 GOPATH 方式,即使在 GOPATH 之外
    GO111MODULE = auto 在1.11&1.12版本在GOPATH外时,GO111MODULE = on,在GOPATH内时,GO111MODULE = off   1.13版本当有go.mod或者在GOPATH 之外,GO111MODULE = on,当处于 GOPATH 内且没有 go.mod 文件时,GO111MODULE = off


  • 相关阅读:
    基础知识---抽象类和接口
    基础知识---数组和链表
    基础知识---枚举
    基础知识---IEnumerable、ICollection、IList、IQueryable
    [翻译]微软 Build 2019 正式宣布 .NET 5
    基础知识---const、readonly、static
    简说设计模式
    Java修行之路
    简说设计模式——迭代器模式
    简说设计模式——备忘录模式
  • 原文地址:https://www.cnblogs.com/zdzdbk/p/14581712.html
Copyright © 2011-2022 走看看