我想在Go中执行一个简单的划分.
fmt.Println(3/10)
Run Code Online (Sandbox Code Playgroud)
这打印0而不是0.3.这有点奇怪.有人可以分享一下这背后的原因是什么?我想在Go中执行不同的算术运算.
谢谢
是否可以从指向字符串的指针获取字符串值?
我正在使用goopt包来处理标志解析,而包只返回*string.但我想使用这些值来调用地图中的函数.
举个例子.
var strPointer = new(string)
*strPointer = "string"
functions := map[string]func() {
"string": func(){
fmt.Println("works")
},
}
//Do something to get the string value
functions[strPointerValue]()
Run Code Online (Sandbox Code Playgroud)
你可以看到这里展示的问题http://play.golang.org/p/1s0-d-GO-L
我是Go的新手,现在我遇到了问题.我有一个名为Message的类型,它是这样的结构:
type Message struct {
Cmd string `json:"cmd"`
Data interface{} `json:"data"`
}
Run Code Online (Sandbox Code Playgroud)
我也有一个名为CreateMessage的类型,如下所示:
type CreateMessage struct {
Conf map[string]int `json:"conf"`
Info map[string]int `json:"info"`
}
Run Code Online (Sandbox Code Playgroud)
我有一个像JSON字符串{"cmd":"create","data":{"conf":{"a":1},"info":{"b":2}}}.
当我用json.Unmarshal它将其解码为Message变量时,答案是{Cmd:create Data:map[conf:map[a:1] info:map[b:2]]}.
那么我可以将JSON解码为Message结构并根据Cmd更改其Data的接口{}以键入CreateMessage吗?
我试图将Data直接转换为CreateMessage类型,但编译器告诉我Data是map [sting] interface {}类型.
我有两个struct有相同的成员,我想将一个结构复制到另一个,请参阅下面的伪代码:
type Common struct {
Gender int
From string
To string
}
type Foo struct {
Id string
Name string
Extra Common
}
type Bar struct {
Id string
Name string
Extra Common
}
Run Code Online (Sandbox Code Playgroud)
然后,我有foo结构的Foo,而bar结构的Bar,有什么办法复制bar的foo?
根据围棋的游,在围棋切片s,表达式s[lo:hi]的计算结果为从元件的切片lo通过hi-1,包括:
package main
import "fmt"
func main() {
p := []int{0, // slice position 0
10, // slice position 1
20, // slice position 2
30, // slice position 3
40, // slice position 4
50} // slice position 5
fmt.Println(p[0:3]) // => [0 10 20]
}
Run Code Online (Sandbox Code Playgroud)
在我上面的代码示例中,"p [0:3]"似乎直观地"读取"为:"从位置0到位置3的切片",等于[0,10,20,30].但当然,它实际上相当于[0 10 20].
所以我的问题是:评估上限值的设计原理是什么hi-1而不是简单hi?这感觉不直观,但必须有一些理由让我失踪,我很好奇这可能是什么.
提前致谢.
我试图在我尝试发送到Go服务器的请求中传递一个额外的参数 -
websocket.create_connection("ws://<ip>:port/x/y?token="qwerty")
Run Code Online (Sandbox Code Playgroud)
Go服务器实现如下 -
func main() {
err := config.Parse()
if err != nil {
glog.Error(err)
os.Exit(1)
return
}
flag.Parse()
defer glog.Flush()
router := mux.NewRouter()
http.Handle("/", httpInterceptor(router))
router.Handle("/v1/x", common.ErrorHandler(stats.GetS)).Methods("GET")
router.Handle("/v1/x/y", common.ErrorHandler(stats.GetS)).Methods("GET")
var listen = fmt.Sprintf("%s:%d", config.Config.Ip, config.Config.Port)
err = http.ListenAndServe(listen, nil)
if err != nil {
glog.Error(err)
os.Exit(1)
}
}
func httpInterceptor(router http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
startTime := time.Now()
if !auth.Auth(w, req) {
http.Error(w, "Failed authentication", 401)
return
}
router.ServeHTTP(w, req)
finishTime := time.Now() …Run Code Online (Sandbox Code Playgroud) 我正在尝试向一个包添加一个示例,并通过示例运行该示例go test,但该示例永远不会运行.
例如,请参阅此要点:https://gist.github.com/85469ecc65bb5bb85857
要点有example_test.go:
package cow_test
import (
cow "gist.github.com/85469ecc65bb5bb85857"
)
func Example() {
cow.Poke()
}
Run Code Online (Sandbox Code Playgroud)
然而,当我运行这个:
# go test -v example_test.go
testing: warning: no tests to run
PASS
ok command-line-arguments 0.002s
Run Code Online (Sandbox Code Playgroud)
但是stdlib的其他软件包工作得很好:
# cd /usr/lib/go/src/errors
# go test -v example_test.go
=== RUN: Example
--- PASS: Example (0.00s)
PASS
ok command-line-arguments 0.002s
Run Code Online (Sandbox Code Playgroud)
我的例子出了什么问题?
我有一个嵌套结构,用于解码 JSON 请求。
type Service struct {
ID string `json:"id,omitempty" db:"id"`
Name string `json:"name" db:"name"`
Contract struct {
ServiceTime int `json:"service_time"`
Region string `json:"region"`
} `json:"contract" db:"contract"`
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 blob 类型在 MySQL 中存储合同。为了使其工作,我需要创建一个不同的结构,将 Contract 作为字符串插入到数据库中。这可以通过仅使用单个结构以更好的方式完成还是有其他优雅的方式?
如何解析具有各种元素的巨大XML文件(即不重复多次相同的元素).
例:
<stuff>
<header>...</header>
<item>...</item>
...
<item>...</item>
<something>...</sometihng>
</stuff>
Run Code Online (Sandbox Code Playgroud)
我想在Go中编写一个脚本,允许我将该文件拆分为多个较小的文件,每个文件具有特定数量的标签.有关如何使用Go解析XML的所有示例似乎都依赖于了解文件中的元素.
可以在不知道的情况下解析文件吗?对于XML中的每个元素,无论有什么元素(标题,项目,某些东西等等)都有类似的东西
我是 Go 新手,我正在努力寻找一种从 Go 模板语言中的数组返回唯一变量的方法。这是为了配置一些软件,我无法访问源代码来更改实际程序,只能更改模板。
我在 Go 操场上举了一个例子:
package main
import "os"
import "text/template"
func main() {
var arr [10]string
arr[0]="mice"
arr[1]="mice"
arr[2]="mice"
arr[3]="mice"
arr[4]="mice"
arr[5]="mice"
arr[6]="mice"
arr[7]="toad"
arr[8]="toad"
arr[9]="mice"
tmpl, err := template.New("test").Parse("{{range $index, $thing := $}}The thing is: {{$thing}}\n{{end}}")
if err != nil { panic(err) }
err = tmpl.Execute(os.Stdout, arr)
if err != nil { panic(err) }
}
Run Code Online (Sandbox Code Playgroud)
现在返回:
The thing is: mice
The thing is: mice
The thing is: mice
The thing is: mice
The thing …Run Code Online (Sandbox Code Playgroud)