小编icz*_*cza的帖子

如何在struct literal中将bool指针设置为true?

我有下面的函数接受一个bool指针.我想知道是否有任何符号允许我在结构文字中设置is字段的值true; 基本上没有定义新的标识符(i.e. var x := true ; handler{is: &x} )

package main

import "fmt"

func main() {
    fmt.Println("Hello, playground")
    check(handler{is: new(bool) })
}


type handler struct{
    is *bool
}

func check(is handler){}
Run Code Online (Sandbox Code Playgroud)

struct pointers literals go

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

去会话变量?

我是Go语言(Golang)的新手,我正在编写一个基于Web的应用程序.我想使用会话变量,比如PHP中的类型(从一个页面到下一个页面可用的变量,以及用户会话的唯一变量).Go中有类似的东西吗?如果没有,我将如何自己实施它们?或者有哪些替代方法?

session session-variables go

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

我可以将第三方套餐导入golang游乐场吗?

我用谷歌搜索但没有回答.可能吗?如果是的话,该怎么办?

Go Playground链接:https://play.golang.org/

go go-playground

21
推荐指数
1
解决办法
8217
查看次数

在GoLang打印"(双引号)

我正在编写一个从文件中读取的Go代码.为此,我使用fmt.Println()打印到该中间文件.

我怎么打印"

string go quote

21
推荐指数
4
解决办法
3万
查看次数

如何从函数调用中获取返回值的指针?

我只需要一个指向time.Time的指针,所以下面的代码似乎无效:

./c.go:5:不能取时间地址.现在()

我只是想知道为什么?有没有办法做到这一点,除了先对变量赋值并获取变量的指针?

package main

import "time"
func main() {
    _ = &time.Now()
}
Run Code Online (Sandbox Code Playgroud)

pointers go

20
推荐指数
3
解决办法
6704
查看次数

使用Go中的反射来获取结构的名称

我发现这个问题有这个很好的答案:

如何在Golang中找到一个对象的类型?

我玩弄了答案并尝试以相同的方式获取结构的名称:

package main

import (
        "fmt"
        "reflect"
)

type Ab struct {

}

func getType(myvar interface{}) string {
        return reflect.TypeOf(myvar).Name()
}

func main() {
        fmt.Println("Hello, playground")

        tst := "string"
        tst2 := 10
        tst3 := 1.2
        tst4 := new(Ab)

        fmt.Println(getType(tst))
        fmt.Println(getType(tst2))
        fmt.Println(getType(tst3))
        fmt.Println(getType(tst4))

}
Run Code Online (Sandbox Code Playgroud)

去游乐场:http://play.golang.org/p/tD8mygvETH

但输出是:

Hello, playground
string
int
float64


Program exited.
Run Code Online (Sandbox Code Playgroud)

预期产出将是:

Hello, playground
string
int
float64
Ab

Program exited.
Run Code Online (Sandbox Code Playgroud)

我试着通过阅读文档来弄清楚,但没有找到相关的问题.所以,对于非常普遍的问题感到抱歉,但是:

是什么原因,reflect.TypeOf().Name()不适用于(this)struct(s)?

reflection struct types go

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

如何使用频道广播消息

我是新手,我正在尝试创建一个简单的聊天服务器,客户端可以向所有连接的客户端广播消息.

在我的服务器中,我有一个goroutine(无限循环)接受连接,所有连接都由一个通道接收.

go func() {
    for {
        conn, _ := listener.Accept()
        ch <- conn
        }
}()
Run Code Online (Sandbox Code Playgroud)

然后,我为每个连接的客户端启动一个处理程序(goroutine).在处理程序内部,我尝试通过迭代通道来广播所有连接.

for c := range ch {
    conn.Write(msg)
}
Run Code Online (Sandbox Code Playgroud)

但是,我不能播放因为(我认为从阅读文档)通道需要在迭代之前关闭.我不确定何时应关闭频道,因为我想继续接受新的连接,关闭频道不会让我这样做.如果有人可以帮助我,或提供更好的方式向所有连接的客户广播消息,我们将不胜感激.

concurrency channel go goroutine

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

golang - 传递方法的功能

我很好奇Go是否可行.我有一个有多种方法的类型.有可能有一个函数,它接受一个方法,并可以为该类型调用它?

这是我想要的一个小例子:

package main

import (
  "fmt"
)

type Foo int

func (f Foo) A() {
    fmt.Println("A")
}
func (f Foo) B() {
    fmt.Println("B")
}
func (f Foo) C() {
    fmt.Println("C")
}

func main() {
    var f Foo
    bar := func(foo func()) {
        f.foo()
    }
    bar(A)
    bar(B)
    bar(C)
}
Run Code Online (Sandbox Code Playgroud)

Go think类型Foo有一个名为的方法foo(),而不是用传入的方法名称替换它.

methods go

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

Golang嵌入式结构类型

我有这些类型:

type Value interface{}

type NamedValue struct {
    Name  string
    Value Value
}

type ErrorValue struct {
    NamedValue
    Error error
}
Run Code Online (Sandbox Code Playgroud)

我可以使用v := NamedValue{Name: "fine", Value: 33},但我无法使用e := ErrorValue{Name: "alpha", Value: 123, Error: err}

似乎嵌入语法没问题,但使用它不起作用?

struct embedding go composite-literals

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

Go中的Python string.format的等价物?

在Python中,您可以这样做:

"File {file} had error {error}".format(file=myfile, error=err)
Run Code Online (Sandbox Code Playgroud)

或这个:

"File %(file)s had error %(error)s" % {"file": myfile, "error": err}
Run Code Online (Sandbox Code Playgroud)

在Go中,最简单的选项是:

fmt.Sprintf("File %s had error %s", myfile, err)
Run Code Online (Sandbox Code Playgroud)

这不允许你交换格式字符串中的参数顺序,你需要为I18N做.Go 确实有这个template包,需要这样的东西:

package main

import (
    "bytes"
    "text/template"
    "os"
)

func main() {
    type Params struct {
        File string
        Error string
    }

    var msg bytes.Buffer

    params := &Params{
        File: "abc",
        Error: "def",
    }

    tmpl, _ := template.New("errmsg").Parse("File {{.File}} has error {{.Error}}")
    tmpl.Execute(&msg, params)
    msg.WriteTo(os.Stdout)
}
Run Code Online (Sandbox Code Playgroud)

这似乎是一个很长的路要走错误信息.是否有更合理的选项允许我提供独立于订单的字符串参数?

python string go

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