Tag:

如何使用“testing”包在Gotesting中进行打印?

我正在Go中运行一个testing,用于打印某些东西(即用于testing的debugging),但它不打印任何东西。 func TestPrintSomething(t *testing.T) { fmt.Println("Say hi") } 当我跑这个文件去testing,这是输出: ok command-line-arguments 0.004s 要知道,真正打印它的唯一方法是通过t.Error()打印它,如下所示: func TestPrintSomethingAgain(t *testing.T) { t.Error("Say hi") } 哪个输出这个: Say hi — FAIL: TestPrintSomethingAgain (0.00 seconds) foo_test.go:35: Say hi FAIL FAIL command-line-arguments 0.003s gom: exit status 1 我谷歌search,看看手册,但没有发现任何东西。

Go用来干什么?

我对Google,Go的新语言很感兴趣。 我检查了golang.com上的资料,现在我想在实践中尝试使用Go。 请分享您认为使用Go的任何想法。 有没有可以join的任何开源Go项目?

golang结构定义中的反向用法是什么?

type NetworkInterface struct { Gateway string `json:"gateway"` IPAddress string `json:"ip"` IPPrefixLen int `json:"ip_prefix_len"` MacAddress string `json:"mac"` … } 我很困惑什么是反向内容的function,如json:"gateway" 。 这只是评论,就像//this is the gateway ?

函数声明语法:在函数名称前的括号中的东西

对不起,我不能在问题标题中更具体,但是我正在阅读一些Go代码,并且遇到了这种forms的函数声明: func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { … } 从https://github.com/mattermost/platform/blob/master/api/context.go func (s *GracefulServer) BlockingClose() bool { … } 从https://github.com/braintree/manners/blob/master/server.go 括号之间的(h handler)和(s *GracefulServer)是什么意思? 整个函数声明意味着什么,考虑括号之间的事物的含义? 编辑 这不是Go中函数和方法的区别的重复吗? :这个问题对我来说是因为我不知道函数名前的括号里面的东西,不是因为我想知道函数和方法之间有什么区别……如果我知道这个声明是一种方法,首先有这个问题。 有一天,如果有人和我有同样的怀疑,我不相信她会去找“golang的方法”,因为她不知道情况是这样的。 这就好比想知道在mathexpression式之前“sigma”是什么意思(不知道它意味着总结),有人说这是summation和其他东西之间的区别的重复。 另外,这个问题(“它是一个接收者”)的简短答案并不是“function和方法之间有什么区别”的答案。

去,去得到,去安装,本地包和版本控制

我无法理解创build具有本地软件包的go项目的工作stream程。 说我创build一个新的项目,使用git进行版本控制,它有一个main.go文件和一个tools.go文件,它将在程序包utils中。 所以我有这样的目录结构: /myproject/ main.go utils/ tools.go main.go如下所示: package main import "./utils" func main() { utils.DoSomthing() } 和tools.go看起来像这样: package utils; func DoSomething() { } 一切工作在当地很好,使用去build立和运行 。 但是这是在github上托pipe,我希望能够让其他人使用go get命令来安装它。 因此,必须将本地软件包导入更改为使用格式“github.com/user/project/utils”,它的工作,除了现在我有两个源代码的副本,真正的问题是,具有git历史的副本有一个导入使用下载的副本。 因此,如果我正在使用git历史logging复制副本,则对tools.go所做的任何更改都将被忽略,因为它将使用下载的副本。 所以我想知道是否有人可以解释在同一个项目中使用go get ,版本控制和包导入的正确方法。

如何在我的项目中testing所有testing?

go test命令仅包含一个目录中的*_test.go文件。 我想go test整个项目,这意味着testing应该覆盖dir ./中的所有*_test.go文件和dir ./下的每个*_test.go树目录。 什么命令来做到这一点?

共享内存与消息传递如何处理大型数据结构?

在看Go和Erlang的并发方法时,我注意到它们都依赖于消息传递。 这种方法显然减轻了对复杂锁的需求,因为没有共享状态。 但是,考虑许多客户机需要对内存中的单个大型数据结构进行并行只读访问的情况 – 如后缀数组。 我的问题: 将使用共享状态更快,并使用更less的内存比消息传递,因为数据是只读的,只需要在一个单一的位置存在锁通常是不必要的? 在消息传递上下文中如何处理这个问题? 会不会有一个访问数据结构的进程,客户端只需要按顺序请求数据呢? 或者,如果可能的话,数据是否会被分块来创build多个处理大块的进程? 鉴于现代CPU和内存的架构,这两种解决scheme之间是否有很大的区别?即,多核可以共享内存是否可以被并行读取?这意味着没有任何硬件瓶颈,否则这两个解决scheme会大致执行相同的操作?

golang中的string和string有什么区别?

在Go语言中 []string是string数组 我们也使用…string作为参数 有什么区别? function定义: func f(args …string) {} 我可以像下面这样调用这个函数吗? args := []string{"a", "b"} f(args)

Golang:左侧没有新的variables:=

这里发生了什么事? package main import "fmt" func main() { myArray :=[…]int{12,14,26} ; fmt.Println(myArray) myArray :=[…]int{11,12,14} //error pointing on this line fmt.Println(myArray) ; } 它会抛出一个错误,说 no new variables on left side of := 我正在做的是重新赋值给一个已经声明的variables。

无法加载软件包:软件包:无法build立Go源文件

这是错误消息: % go get can't load package: package .: no buildable Go source files in /Users/7yan00 % echo $GOPATH /Users/7yan00/Golang 你将如何解决这个错误?