小编Gho*_*orm的帖子

使用 git 设置正确的 Golang 目录结构以在自定义包上使用 go build

所以我一直在这个现在抓我的头几个星期,阅读关于如何几个源后$ go build作品和它的三个法宝目录/bin/pkg/src,它仍然不是很清楚,我如何使用自定义包和如何构建Golang项目应该管理一个 git repo。

让我更详细地说明一下我的情况:

我正在项目目录中的 Go 项目与默认.../user/go/.... 对于我的所有项目,我有一个不同的目录树,其结构如下:

projects
 | project-a
 | project-b
    | docs
    | media
    | scrum
    | project-b   <-- git repo containg Go structure
       | .git
       | gitignore.txt
       | bin
       | pkg
       | src
          | custom-package-a
          |  | foo.go
          | custom-package-b
          |  | bar.go
 |     | main.go      
 | project-c
Run Code Online (Sandbox Code Playgroud)

我的projects目录可以包含任何类型的项目:java、Unity3D、VisualC# 等……然后在每个项目下,它都包含一个带有源代码的存储库。

我最近能够通过添加projects/project-b/project-b到我的 GOPATH来成功构建,因此它可以看到 src 目录。

即使构建正确,典型 Go 项目的文件结构也应该是这样吗?

在我的 GOPATH 中,我删除了原始路径 …

git package go file-structure gopath

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

如何将“com.unity3d.player.UnityPlayer”导入我的 Android 库?

UnityPlayer我在将依赖项添加到 Unity 的 Android 库插件中时遇到问题。

在此输入图像描述

我只是想不出向我的插件添加依赖项的正确方法。

在我尝试将一个classes.jar文件添加到libs包含所有 UnityPlayer 代码的目录之前,这让我可以编写代码而不会出现智能感知错误,但是当我构建并运行时,我得到了如此大量的输出。

CommandInvokationFailure: Gradle build failed. 
C:\Program Files\Unity\Hub\Editor\2018.4.14f1\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\OpenJDK\Windows\bin\java.exe -classpath "C:\Program Files\Unity\Hub\Editor\2018.4.14f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-5.1.1.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleRelease"

stderr[

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':checkReleaseDuplicateClasses'.
> 1 exception was raised by workers:
  java.lang.RuntimeException: Duplicate class bitter.jnibridge.JNIBridge found in modules classes-2.jar (:coffeeplugin-release:) and unity-classes.jar (unity-classes.jar)
  Duplicate class bitter.jnibridge.JNIBridge$a found in modules classes-2.jar (:coffeeplugin-release:) and unity-classes.jar (unity-classes.jar)
  Duplicate class com.unity3d.player.NativeLoader found in modules classes-2.jar (:coffeeplugin-release:) …
Run Code Online (Sandbox Code Playgroud)

android jar unity-game-engine gradle android-studio

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

了解Go中的http handlerfunc包装器技术

我看到了Mat Ryer撰写一篇文章,内容涉及如何使用服务器类型和HTTP处理程序类型的包装程序,func(http.ResponseWriter, *http.Request)

我认为这是一种构建REST API的更优雅的方式,但是我完全迷住了使包装器正常运行的想法。我要么在编译时收到类型不匹配的错误,要么在调用时收到404的错误。

这基本上是我目前用于学习的目的。

package main

import(
   "log"
   "io/ioutil"
   "encoding/json"
   "os"
   "net/http"
   "github.com/gorilla/mux"
)

type Config struct {
   DebugLevel int `json:"debuglevel"`
   ServerPort string `json:"serverport"`
}

func NewConfig() Config {

   var didJsonLoad bool = true

   jsonFile, err := os.Open("config.json")
   if(err != nil){
      log.Println(err)
      panic(err)
      recover()
      didJsonLoad = false
   }

   defer jsonFile.Close()

   jsonBytes, _ := ioutil.ReadAll(jsonFile)

   config := Config{}

   if(didJsonLoad){
      err = json.Unmarshal(jsonBytes, &config)
      if(err != nil){
         log.Println(err)
         panic(err)
         recover()
      }
   }

   return config
} …
Run Code Online (Sandbox Code Playgroud)

rest http wrapper go gorilla

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

如何解组包含 UTF-8 字节顺序标记 (BOM) 的 JSON 字符串?

所以,我已经解决了我遇到的问题。这与我是否在 C# 客户端的 StreamWriter 上使用编码有关,但我想知道无论如何如何处理这些额外的 3 个字节。

这是一个用 C# 编写的客户端和一个用 Go 编写的服务器。为什么是 C#?稍后它将有用于云计算的 Unity 应用程序。为什么去?我只是想使用它。另外我的服务器是 Linux 并且 Go 很容易 x-compile。

问题是从我的 C# 客户端发送的数据在前面附加了 3 个额外的字节,这与 Go 的Json.Unmarshal函数在这些数据到达服务器后直接提供它相冲突。

这是离开 C# 客户端的 JSON 格式字符串
{"channel":0, "data": {"name":"Hasty Wombat","uuid":"e91ccc23-7e80-4189-958e-9b778dce1146","type":"Drone"}}\n

这是通过在 C# 客户端中配置为 UTF8 的流编写器之前的字节数组。
_sWriter = new StreamWriter(_tStream, System.Text.Encoding.UTF8, 8192);
长度:108

123 34 99 104 97 110 110 101 108 34 58 48 44 32 34 100 97 116 97 34 58 32 123 34 110 97 …
Run Code Online (Sandbox Code Playgroud)

c# json tcp utf-8 go

0
推荐指数
1
解决办法
481
查看次数