预期:我使用 go get 安装包,它会在 src 文件夹中创建所有必需的文件夹,但它们只出现在 pkg/mod 文件夹中,我无法使用它们。
现实:它说它正在下载,完成,然后什么都没有。
一切都在 Windows 环境变量中正确设置,这只是 .. 不起作用。
使用的命令: go get github.com/fatih/color
去环境:
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\admin\AppData\Local\go-build
set GOENV=C:\Users\admin\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\admin\Desktop\gostuff\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\admin\Desktop\gostuff
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=c:\go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=c:\go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.16
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS= …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下命令安装golint:go get -u golang.org/x/lint/golint。而且我认为我遇到两个问题:
go get: warning:
modules disabled by GO111MODULE=auto in GOPATH/src;
ignoring ../go.mod;
see 'go help modules'
package golang.org/x/lint/golint:
unrecognized import path "golang.org/x/lint/golint" (https fetch: Get https://golang.org/x/lint/golint?go-get=1: dial tcp 216.58.200.192:443: i/o timeout)
Run Code Online (Sandbox Code Playgroud)
然后我尝试安装golang / tools,也失败了...
package golang.org/x/tools: unrecognized import path "golang.org/x/tools" (https fetch: Get https://golang.org/x/tools?go-get=1: dial tcp 216.58.200.192:443: i/o timeout)
Run Code Online (Sandbox Code Playgroud) 如何在 Go 中读取文件并跳过第一行/标题?
在Python中我知道我可以做
counter = 0
with open("my_file_path", "r") as fo:
try:
next(fo)
except:
pass
for _ in fo:
counter = counter + 1
Run Code Online (Sandbox Code Playgroud)
这是我的 Go 应用程序
package main
import (
"bufio"
"flag"
"os"
)
func readFile(fileLocation string) int {
fileOpen, _ := os.Open(fileLocation)
defer fileOpen.Close()
fileScanner := bufio.NewScanner(fileOpen)
counter := 0
for fileScanner.Scan() {
//fmt.Println(fileScanner.Text())
counter = counter + 1
}
return counter
}
func main() {
fileLocation := flag.String("file_location", "default value", "file path to count lines")
flag.Parse() …
Run Code Online (Sandbox Code Playgroud) func TestGetUID(t *testing.T) {
namespace := "lkfm"
expecteduid := "fake_uid"
var tests = []struct {
description string
expected string
namespace string
objs []runtime.Object
}{
{"PositiveScenario", expecteduid, namespace, []runtime.Object{simpleNamespace(namespace)}},
}
for _, x := range tests {
t.Run(x.description, func(t *testing.T) {
client := fake.NewSimpleClientset(x.objs...)
actual := getUID(client, x.namespace)
assert.Equal(t, x.expected, actual)
})
}
}
Run Code Online (Sandbox Code Playgroud)
Lint 给我一些问题:
它报告此错误:“在函数文字中的范围范围内使用变量x
(scopelint) ”
我想绑定一个 json 对象数组,如下所示:
[
{
"id": "someid"
},
{
"id": "anotherid"
}
]
Run Code Online (Sandbox Code Playgroud)
这是我的模型
type DeleteByID struct {
ID string `json:"id" binding:"required"`
}
Run Code Online (Sandbox Code Playgroud)
我使用 gin 来处理该对象
var stock []DeleteByID
if err := ctx.ShouldBindJSON(&stock); err != nil {
return err
}
Run Code Online (Sandbox Code Playgroud)
问题是它没有绑定/检查我的对象。
logcat是如何工作的?它是仅在连接到阅读器时输出日志,否则它将所有内容重定向到/ dev/null?我会根据这个问题跟进一个不同的问题.谢谢
我正试图在windows上交叉编译go代码,针对linux机器.我用简单的go代码来确定目标操作系统/平台,
package main
import "fmt"
import "runtime"
func main() {
fmt.Printf("OS: %s\nArchitecture: %s\n", runtime.GOOS, runtime.GOARCH)
}
Run Code Online (Sandbox Code Playgroud)
运行上面的代码给了我
OS: linux
Architecture: amd64
Run Code Online (Sandbox Code Playgroud)
当我尝试在Windows上交叉编译时(使用JetBrain的Goland IDE)
> go version
go version go1.9.2 windows/amd64
Run Code Online (Sandbox Code Playgroud)
使用GOOS=linux ;GOARCH=amd64
环境标志,我得到以下错误
cmd/go: unsupported GOOS/GOARCH pair linux /amd64
Run Code Online (Sandbox Code Playgroud)
我是golang的新手,所以我可能会遗漏一些简单的东西,但这个错误让我陷入困境.任何帮助赞赏...
我将 Goland 安装为 Go IDE,它希望我配置 GOPATH。我是这门语言的新手,所以我不知道该怎么做。这是错误消息:
检测到 GOPATH 我们从您的 GOPATH 中检测到一些库。您可能希望在 GOPATH 配置中添加额外的库。
编辑:不是重复的问题,export GOROOT=""
解决了我的问题。不管怎么说,还是要谢谢你。
将此 12 字节数组 (int96) 作为时间戳。
[128 76 69 116 64 7 0 0 48 131 37 0]
如何将其转换为时间戳?
我知道前 8 个字节应该被转换为 int64 毫秒,代表一个纪元日期时间。
考虑一下(https://play.golang.org/p/zvDiwul9QR0):
package main
import (
"context"
"fmt"
"time"
)
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
for {
select {
case <-ctx.Done():
fmt.Println("Done")
break
default:
for {
fmt.Println("loop")
time.Sleep(500 * time.Millisecond)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以这里上下文在 2 秒后返回一个“Done()”通道。我想抓住这个并取消我的无限循环。上面的代码示例没有这样做,它永远不会退出循环。
我怎样才能实现这个目标?