相关疑难解决方法(0)

布局Go项目的合理方法是什么?

我有一个开始变得更加复杂的go项目,并希望以减轻痛苦的方式放置文件系统.

有什么有意义的好例子吗?

project go

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

将项目拆分为子文件夹

我想将我的项目分解为子文件夹.

我想要这个代码结构:

??? main.go
??? models
    ??? user.go
Run Code Online (Sandbox Code Playgroud)

main.go是:

package main

import (
  "fmt"
  "./models"
)

func main(){
  fmt.Println(User{"new_user"})

}
Run Code Online (Sandbox Code Playgroud)

而user.go是:

package models

type User struct {
  Login string
}
Run Code Online (Sandbox Code Playgroud)

但是主程序包中没有定义用户,导入引发警告"导入但未使用".

我究竟做错了什么?我的项目很简单(不是这样的例子,只是文件很少(控制器和模型)),我想要一个简单的结构.

也许我是以完全错误的方式做到的?

问题项目在这里:https://github.com/abonec/go_import_problem

go

16
推荐指数
3
解决办法
9924
查看次数

Go - 如何导入其他包内的结构?

我试图学习Go但我经常感到沮丧,因为其他语言的一些基本功能似乎在Go中不起作用.所以基本上,我想使用在其他文件中定义的struct类型.我能够使用除struct类型之外的函数.在main.go中,

  package main

  import (
      "list"
  )

  func main() {
      lst := list.NewList(false)         
      lst.Insert(5)
      lst.Insert(7)
      lst.InsertAt(2, 1)
      lst.PrintList()
  }
Run Code Online (Sandbox Code Playgroud)

这完全(和所有其他功能)完全符合我的预期(列表在$ GOPATH中).在包列表中,我将struct定义如下:

type LinkedList struct {
    head    *node
    size    int
    isFixed bool
}
Run Code Online (Sandbox Code Playgroud)

我想在其他结构中使用这个结构,所以我试图做这样的事情,

type SomeType struct {
    lst *LinkedList
}
Run Code Online (Sandbox Code Playgroud)

但不幸的是,我得到了没有定义LinkedList类型的错误.如何使用其他包中定义的结构?

struct go

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

奇怪的golang包导入问题

这是目录树:

+/project  
  +---/bin  
  +---/pkg  
  +---/src  
    +---/client_test  
      +---client_test.go  
    +---main.go  
Run Code Online (Sandbox Code Playgroud)

在main.go中:

package main
import ("client_test")
func main() {
  client_test.Send()
}
Run Code Online (Sandbox Code Playgroud)

在client_test.go中:

package client_test
func Send() {
}
Run Code Online (Sandbox Code Playgroud)

错误:

src/main.go|8| imported and not used: "client_test"
src/main.go|32| undefined: client_test
Run Code Online (Sandbox Code Playgroud)

我已经阅读了如何在golang中使用自定义包?而且我觉得我和这个家伙有同样的解决方案,但我只是不知道如何解决这个问题.请帮忙.

去环境:

GOARCH="amd64"  
GOBIN="/usr/local/go/bin"  
GOCHAR="6"  
GOEXE=""  
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread -fno-common"  
GOHOSTARCH="amd64"  
GOHOSTOS="darwin"  
GOOS="darwin"  
GOPATH="/Users/staff/projects/Minigame_Server" (that's exactly my working directory)  
GOROOT="/usr/local/go"  
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"  
CGO_ENABLED="1"  
Run Code Online (Sandbox Code Playgroud)

go

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

如何导入 Go 中主包中定义的我自己的函数?

我对 Go 还很陌生,但我来自 C++ 学校。我只想制作一个项目并将逻辑分成多个文件。

在 C++ 中,我只需要穿上我的main_file.cpp

#include "my_own_lib.hpp" 
Run Code Online (Sandbox Code Playgroud)

(类似于Node.js 中的module.exports和 then require('relative/path/to/my-own-lib')

就是这样。在 Go 中我遵循相同的逻辑,但我的结果是:

$ go run main.go
main.go:4:8: open /Users/mt/Documents/Codes/go/src/github.com/mt/Apollo/tst: no such file or directory
Run Code Online (Sandbox Code Playgroud)

我的文件:

主程序

package main

import "fmt"
import "./tst"

func main() {
    fmt.Println("just testing")
    tst.p()
}
Run Code Online (Sandbox Code Playgroud)

尖沙咀

package tst

import "fmt"

func p() {
    fmt.Println("ola")
}
Run Code Online (Sandbox Code Playgroud)

当然我的文件结构是:

myFolder/
   |- main.go
   |_ tst.go
Run Code Online (Sandbox Code Playgroud)

有人能告诉我这样做的正确方法是什么吗?

import go

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

具有许多文件的 golang 包的内部组织

我有一个想要分发的 Go 库。它有 62 个源文件,但我想将 API 保存在一个包中。有没有办法可以在单个包中使用多个目录来存储代码?这不是大量的源代码,因为源文件本身很小,如果可能的话,我想保持这种状态以使其可导航。

由于它模仿了其他语言的类似库,因此它目前有两个包:/project 和 /project/models。在了解了有关 Go 打包的更多信息后,我现在意识到这对于分发和使用来说很笨拙。用户更喜欢单个包。

有没有一种“gopheric”的方式来做到这一点?

package go

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

从golang程序中执行另一个go程序

我想从另一个go程序中执行另一个go程序并给它args,如下所示:

package main
func main() {
  //here I want to call a specific go file, e.g. test.go with args
}
Run Code Online (Sandbox Code Playgroud)

test.go

package main
func main(x int) {
  //do stuff with x
}
Run Code Online (Sandbox Code Playgroud)

我不想发送一个int作为arg,但像http.ResponseWriter

我想到的解决方案,但它不会很好:

  1. 使用gob将http.ResponseWriter转换为字符串
  2. 从test.go读一行
  3. 将字符串发送到test.go

谢谢你的回答:D

go

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

Golang,从子包中使用主包的结构或函数

我正在尝试编写一个包含多个子项目的 go 项目。举一个简单的例子,该项目如下所示

Main
 |- package one
    |- package one.one
    |- package one.two
 |- package two
Run Code Online (Sandbox Code Playgroud)

从我的主包中,我可以通过导入它们来使用任何子包的任何函数或结构。但我的问题是如何从任何子包访问 main 的结构或函数。

go

3
推荐指数
1
解决办法
5034
查看次数

无法在 golang 中包含多文件

我知道以前有人问过这个问题,我已经尝试了所有可能的答案,但仍然没有任何帮助。

但是,再次刷新问题并详细说明我的问题。我实际上是在尝试将一个简单的文件包含到 main.go 文件中。我的文件夹结构和其余信息如下:

\src\
   Multi-file\
     lib\Car.go
   main.go
Run Code Online (Sandbox Code Playgroud)

货物

 package main

    type Car struct {
        numberOfDoors int
        cylinders int
    }
Run Code Online (Sandbox Code Playgroud)

main.go

package main 

import (
    "fmt"
)

func main() {
    c := Car{4,6}
    fmt.Println(c)
}
Run Code Online (Sandbox Code Playgroud)

当我编译 main.go 时,出现以下错误

# command-line-arguments
.\main.go:8: undefined: Car
Run Code Online (Sandbox Code Playgroud)

这是我的go env详细信息:

set GOARCH=amd64
set GOBIN=
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=C:\xampp\htdocs\golang
set GORACE=
set GOROOT=C:\Go
set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64
set GO15VENDOREXPERIMENT=
set CC=gcc
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0
set CXX=g++
set …
Run Code Online (Sandbox Code Playgroud)

struct compilation go

-2
推荐指数
1
解决办法
1750
查看次数

标签 统计

go ×9

struct ×2

compilation ×1

import ×1

package ×1

project ×1