Go语言中文网 为您找到相关结果 68

mac 下如何安装godoc?

使用的环境mac 10.9.3, 使用brew install go go version go version go1.3.3 darwin/amd64, 安装完没有godoc 然后,安装go get code.google.com/p/go.tools/cmd/godoc 提示: ```package code.google.com/p/go.tools/cmd/godoc imports golang.rog/x/tools/blog: unrecognized import path "golang.org/x/tools/blog" package code.google.com/p/go.tools/cmd/godoc imports golang...阅读全文

关于json解析的问题,求教各位大神

您好,我刚学golang,有个解析json的问题请教各位,谢谢了,我写了以下代码,s1和s2的值能够得到,但是s3中的p1和p2的值不知如何解析到: var filterInfoList map[string]interface{} strFilter := `{"s1":"ddd","s2":"ppp","s3":[{"p1":"ok1"},{"p2":"ok2"}]}` err := json.Unmarshal([]byte(strFilter), &filterInfoList) if err != nil { fmt.Println("error in translating,", err.Error()) return } fm...阅读全文

请教个小问题,有点困惑

我在编写demo时,刚遇见个小问题一直不明白,请求各位解答一下。代码如下: ``` package main import ( "fmt" ) func MySprintf(tag string, format string, v ...interface{}) { msg := fmt.Sprintf(format, v) fmt.Println("msg: " + msg) fmt.Println(tag + ": " + msg) } func main() { v := fmt.Sprintf("%s is bigger than %s", "beijing", "shanghai") fmt.Println("value: " + v) ...阅读全文

请教同行们一个关于go方法的问题

假设定义一个结构体 ```go type A struct{ } ``` 定义一个方法: ```go func (self *A) SayHi() { fmt.println("你好") } ``` 我想问方法第一个括号里加 `*` 与不加 `*` 有什么区别。测试好像没什么区别。请高手指点下。 我是在网上看到下面这句话才想问的,我不太懂。 ``` 对于接口的执行机制: 1.T仅拥有属于T类型的方法集,而*T则同时拥有(T+*T)方法集 2.基于T实现方法,表示同时实现了interface和interface(*T)接口 3.基于*T实现方法,那就只能是对interface(*T)实现接口 ``...阅读全文

使用redigo中mget问题

小白请教个问题哈!我使用redigo时需要用到mget这个命令批量获取参数,但是官方给的传参方式:GO('MGET','KEY1','KEY2'),但是在实际应用中使用总是参数是不定长的,我尝试传入{“key1”,“key2”}也获取不到值,请教各位大佬,有了解怎么批量传参的方式! 目前简单这么使用的:res, r_err := redis.Strings(db.Redis.Do("MGET", "test1","test2")...阅读全文

请教下 reflect.New 动态创建 struct 问题

代码如下,在不知道具体是哪个 struct 的时候,如下的代码要怎么玩? ``` package main import ( "fmt" "reflect" "github.com/vmihailenco/msgpack" ) type User struct { Id int Name string } func main() { u := &User{1, "test"} t := reflect.TypeOf(u).Elem() n := reflect.New(t).Elem().Interface() // 改成下面这样是正常的,但是在项目中并不知道是哪个结构体,也许是 Order, Pay... // ...阅读全文

多次close同一个资源是否有问题?

请教个问题 我有个*netTCPConn, 我在一个routinge做了defer c.Close(),另一个也做了defer c.Close()可不可以? 如果不可以有没有好的办法? 我看 TCPConn有个ok()会判断c是有有效,是否这样就可以多次close了呢? 例如: ```go func aaa(c *net.TCPConn) { defer c.Close() go bbb(c) } func bbb(c *net.TCPConn) { defer c.Close() } ``...阅读全文

请教一个exec.Command的问题

本人是一名新手,今天遇到了一个go调用linux执行文件的问题。 在服务器的PATH里面有些命令是alias生成的,通过exec.Command无法让它执行起来,我以“ll”命令为例,实现如下: ```go cmd := "ll" params := []string{"-a", "/home"} exec.Command(cmd, params).Output() ``` 可是上面的代码没有任何输出,我分析了一下没有运行起来。 初步分析应该是ll命令是一个alias命令,我换成ls就可以了。 但是在实际项目里面确实有几个工具是alias的。 所以,我想请教一下,对于alias的执行文件,怎么才能通过exec.Command来实现呢? 谢谢各...阅读全文

请教一个protobuf的反序列化问题.

我拿到了一个 proto的名称 和 序列化后的数组. 如何反序列化出来. 例如 name := "proto.HeartBeatReq" byf :=[] ........ 如何创建一个 name 对应的对象,然后反序列化. 相当于实现一个函数 ``` func ToObj(name sring , buf []Byte) message{ // how to write this function } ``` Unmarshal 方法会用,但是需要一个具体对象作为参数. 在go 中该如何创建该对象. c++ 中是可以做到的. 例如 ``` google::protobuf::Message* message =...阅读全文

新入GO门,请教大神们关于defer的一个问题

```go func abc() interface{} { blogRows, _ := models.Db.Query("select * from blog where id=1") defer blogRows.Close() catRows, _ := models.Db.Query("select * from category where id=1") defer catRows.Close() return 1 } ``` 这样并没有实现我想要的释放掉两个资源,似乎只释放了一个。于是我又做了以下实验: ```go func abc() interface{} { blogRows, _ := models.Db.Query("select...阅读全文