小编mh-*_*bon的帖子

构建 Go 项目时“package XXX is not in GOROOT”

当我从这个项目中休息时,出现了一个奇怪的问题。启动 Goland 后,我在尝试运行我的项目时遇到了很多错误。

构建我的一个包时的具体错误是: start.go: package project/game is not in GOROOT (C:\Go\src\project\game)

我在下面有一个文件夹结构 C:\Users\username

go
|-src
   |-project
        |-game
            |-entity
                 |-whatever.go
            |-game_stuff.go
        |-server
Run Code Online (Sandbox Code Playgroud)

我的环境变量是这样的:

GOROOT=C:\Go 
GOPATH=C:\Users\ketchup\go 
Run Code Online (Sandbox Code Playgroud)

对于每个模块(项目/游戏/实体、项目/游戏、项目/服务器),我做了一个git mod init.

在构建时,Goland 将尝试运行:

C:\Go\bin\go.exe build -o C:\Users\ketchup\AppData\Local\Temp\___go_build_project_server.exe project/server
Run Code Online (Sandbox Code Playgroud)

并返回错误。

谁能帮我解决这个问题?有点迷失,因为我上次打开 Goland 时运行良好。甚至不确定要看什么方向 - 我对 Go 还很陌生,我不确定要看什么文档:\谢谢大家!

go goland

53
推荐指数
6
解决办法
10万
查看次数

sync.Mutex 和 *sync.Mutex 哪个更好?

在 Go 中,我们可以使用:

type Data struct {
    lock  *sync.Mutex
}
Run Code Online (Sandbox Code Playgroud)

或者

type Data struct {
    lock  sync.Mutex
}
Run Code Online (Sandbox Code Playgroud)

并且,像这样使用:

func (d *Data) Update() {
   d.lock.Lock()
   defer d.lock.Unlock()
   // update
}
Run Code Online (Sandbox Code Playgroud)

我能想到的区别是只*sync.Mutex需要实例化即可使用。

是什么区别sync.Mutex*sync.Mutex围棋,哪一个更好?

mutex go

11
推荐指数
2
解决办法
5282
查看次数

在slice中的index处添加单个值

如果我有

array1 := []int{1, 3, 4, 5}
array2 := []int{2, 4, 6, 8}
Run Code Online (Sandbox Code Playgroud)

我想插入array2[2]6array1[1]如之前3使array1成为一片{1, 6, 3, 4, 5}.我该怎么做?

我在网上阅读的大多数技术都涉及使用:操作符,但也会导致插入剩余的元素.如何在切片中的索引处附加单个值?

go slice

10
推荐指数
4
解决办法
1万
查看次数

如何创建和导出 svg 到 png/jpeg

我有以下代码片段,例如

package main

import (
    "github.com/ajstarks/svgo"
    "os"
    _ "image"
    _ "fmt"
)

func main(){
    width := 512
    height := 512

    canvas := svg.New(os.Stdout)
    canvas.Start(width,height)
    canvas.Image(0,0,512,512,"src.jpg","0.50")
    canvas.End()
}
Run Code Online (Sandbox Code Playgroud)

我想将由此代码创建的 svg 导出为 jpeg 或 png 或 svg 比方说。如何做到这一点我不明白。我可以使用 imagemagick 或其他东西,但为此我需要 SVG 的东西。请有人帮我解决这个问题。

canvas imagemagick go

8
推荐指数
1
解决办法
5911
查看次数

如何删除Laravel 5中的单个记录?

使用Laravel 5我试图删除控制器中的单个记录,这是我的代码:

public function destroy($id)
{
     $employee = Employee::find($id);
     $employee->delete();
     return Redirect::route('noorsi.employee.index');
}
Run Code Online (Sandbox Code Playgroud)

我的浏览页面代码是:

<td><a href="employee/{{$employee->id}}/destroy" class="btn btn-default">Delete</a></td>
Run Code Online (Sandbox Code Playgroud)

我的路线是:

Route::delete(employee.'/{id}', array('as' => 'noorsi.employee.destroy','uses' => Employeecontroller.'@destroy'));
Run Code Online (Sandbox Code Playgroud)

那没用.

如何修复实施?

php model-view-controller laravel laravel-5

7
推荐指数
3
解决办法
5万
查看次数

如何从同一局域网内的远程机器访问节点服务器

假设我的 IP 地址是:192.65.35.12。在这台机器上,我正在运行节点服务器。我可以使用这个 url:http://localhost:3000/在同一台机器上访问网页。

但是,如果我尝试从具有 ip 的远程机器访问节点服务器192.65.35.11。这是行不通的。我使用以下网址从远程机器访问网址: http://192.65.35.12:3000/

我正面临网络连接问题。

做,我需要更改 node.js 中的任何设置以进行远程访问。

那么,如何从远程机器访问节点服务器。

node.js

7
推荐指数
1
解决办法
1万
查看次数

查找模块的版本

我们正在使用 Go 模块。我想在 CLI 中获取模块的特定版本。是否可以?

如果你好奇,原因是我想添加以下generate命令:

//go:generate go run github.com/golang/mock/mockgen -source="$GOPATH/pkg/mod/mymodules.com/mymodule@${VERSION}/module.go" -destination=module_mock.go
Run Code Online (Sandbox Code Playgroud)

所以我需要以某种方式获得版本

go gomock go-modules

7
推荐指数
2
解决办法
8340
查看次数

反映,分配一个指针结构值

我正在尝试将指向结构的指针分配给相同类型的已初始化结构指针的值。

做一个简单的服务定位器

代码是这样的

package main

import (
  "fmt"
  "reflect"
)

type Concrete struct {}
func (c *Concrete) Do(){}

type Doer interface {
    Do()
}

func main() {
    l := ServiceLocator{}
    l.Register(&Concrete{})

    var x Doer
    if l.Get(&x); x!= nil {
        fmt.Println("by interface pointer ok")
    }

    // This is not possible in my understanding
    //var z Doer
    //if l.Get(z); z!= nil {
    //  fmt.Println("by interface ok")
    //}

    var y *Concrete
    if l.Get(y); y!= nil {
        fmt.Println("by struct pointer ok")
    }
}

type …
Run Code Online (Sandbox Code Playgroud)

go

6
推荐指数
1
解决办法
5400
查看次数

ed25519.公共结果不同

使用包https://github.com/golang/crypto/tree/master/ed25519即时尝试获取给定私钥的公钥.

这些数据来自http://www.bittorrent.org/beps/bep_0044.html:test 2(可盐加盐)

问题是,ed25519.Public()在用给定的私钥输入时不会返回相同的公钥.golang实现返回PVK的最后32个字节.但在我的测试数据中,这是出乎意料的.

这里的代码https://play.golang.org/p/UJNPCyuGQB

package main

import (
    "encoding/hex"
    "golang.org/x/crypto/ed25519"
    "log"
)

func main() {
    priv := "e06d3183d14159228433ed599221b80bd0a5ce8352e4bdf0262f76786ef1c74db7e7a9fea2c0eb269d61e3b38e450a22e754941ac78479d6c54e1faf6037881d"
    pub := "77ff84905a91936367c01360803104f92432fcd904a43511876df5cdf3e7e548"
    sig := "6834284b6b24c3204eb2fea824d82f88883a3d95e8b4a21b8c0ded553d17d17ddf9a8a7104b1258f30bed3787e6cb896fca78c58f8e03b5f18f14951a87d9a08"
    // d := hex.EncodeToString([]byte(priv))
    privb, _ := hex.DecodeString(priv)
    pvk := ed25519.PrivateKey(privb)
    buffer := []byte("4:salt6:foobar3:seqi1e1:v12:Hello World!")
    sigb := ed25519.Sign(pvk, buffer)
    pubb, _ := hex.DecodeString(pub)
    sigb2, _ := hex.DecodeString(sig)
    log.Println(ed25519.Verify(pubb, buffer, sigb))
    log.Printf("%x\n", pvk.Public())
    log.Printf("%x\n", sigb)
    log.Printf("%x\n", sigb2)
}
Run Code Online (Sandbox Code Playgroud)

如何使用golang生成与bep相同的公钥?

cryptography go ed25519

6
推荐指数
1
解决办法
1225
查看次数

从人类可读格式转换日期

我知道有一个图书馆可以做相反的事情。我需要将字符串格式化,例如“一年前”到任何日期格式“29/02/15”。

datetime go

5
推荐指数
1
解决办法
1645
查看次数