小编zzz*_*zzz的帖子

如何在Go中生成字符串的哈希值?

例如:

hash("HelloWorld") = 1234567
Run Code Online (Sandbox Code Playgroud)

有没有内置功能可以做到这一点?

谢谢.

hash go

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

何时使用缓冲通道?

缓冲通道的用例有哪些?如果我想要多个并行动作,我可以使用默认的同步通道eq.

package main
import "fmt"
import "time"

func longLastingProcess(c chan string) {
    time.Sleep(2000 * time.Millisecond)
    c <- "tadaa"
}

func main() {
    c := make(chan string)
    go longLastingProcess(c)
    go longLastingProcess(c)
    go longLastingProcess(c)
    fmt.Println(<- c)
}
Run Code Online (Sandbox Code Playgroud)

增加缓冲区大小的实际情况是什么?

go

22
推荐指数
5
解决办法
7742
查看次数

使用Go with fish fish shell - 运行`go install/path/to/src`时出错

我在这里关注golang文档的"如何编写代码"部分.我也用鱼壳贝壳.

我已经按照教程设置了适当的环境变量(GOPATH和PATH)但是我无法使用命令go install github.com/user/hello来处理我的安装.
我收到一个错误:

无法加载包:github.com/user/hello:import"github.com/user/hello":找不到包

go fish

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

[]字节(字符串)有多贵?

让我们转换string[]byte:

func toBytes(s string) []byte {
  return []byte(s) // What happens here?
}
Run Code Online (Sandbox Code Playgroud)

这个演员阵营有多贵?正在进行复制吗?就我在Go规范中看到的那样:字符串的行为类似于字节切片但是不可变,这至少应该涉及复制以确保后续切片操作不会修改我们的字符串s.反向对话会发生什么?[]byte <-> string会话是否涉及编码/解码,如utf8 < - >符文?

performance type-conversion go

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

`追加'复杂性

Go编程语言中这个循环的计算复杂性是多少?

var a []int
for i := 0 ; i < n ; i++ {
  a = append(a, i)
}
Run Code Online (Sandbox Code Playgroud)

append以线性时间(重新分配内存和每个追加拷贝的一切),或在固定的时间里操作(比如在许多语言方式矢量类是implemnted)?

go

10
推荐指数
1
解决办法
2374
查看次数

由类型文字定义的类型的struct字段的方法

在解码JSON时,我总是为每个对象明确地编写一个结构,这样我就可以为父结构中的单个对象实现Stringer接口,如下所示:

type Data struct {
    Records []Record
}

type Record struct {
    ID int
    Value string
}

func (r Record) String() string {
    return fmt.Sprintf("{ID:%d Value:%s}", r.ID, r.Value)
}
Run Code Online (Sandbox Code Playgroud)

我最近了解到可以使用匿名结构进行嵌套.这种方法更简洁,用于定义要解码的数据的结构:

type Data struct {
    Records []struct {
        ID int
        Value string
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,是否可以在结构的成员上定义一个方法,特别是一个匿名结构的成员?就像第一个代码块中的Stringer接口实现一样.

struct types nested anonymous go

5
推荐指数
1
解决办法
190
查看次数

禁用 HTTP 服务器响应的分块编码

我正在使用 net/http 包在 GO 中编写一个小型实验性 http 服务器,我需要所有回复都具有“身份”传输编码。然而,GO 中的 http 服务器总是使用“分块”传输返回响应。有什么方法可以禁用 GO 中 HTTP 服务器上的分块编码?

encoding http go

5
推荐指数
1
解决办法
8870
查看次数

golang接口合规性编译类型检查

我从camlistore看到以下声明(http://code.google.com/p/camlistore/source/browse/pkg/cacher/cacher.go).

var (
        _ blobref.StreamingFetcher = (*CachingFetcher)(nil)
        _ blobref.SeekFetcher      = (*CachingFetcher)(nil)
        _ blobref.StreamingFetcher = (*DiskCache)(nil)
        _ blobref.SeekFetcher      = (*DiskCache)(nil)
)
Run Code Online (Sandbox Code Playgroud)

我知道没有创建变量,并且语句确保编译器检查CachingFether实现StreamingFetcher和SeekFetcher的公共函数.RHS部分使用带有nil参数的指针构造函数语法.这种语法在Go语言中意味着什么?

pointers interface go

5
推荐指数
1
解决办法
1736
查看次数

如何用Go语言创建客户端服务器?

我是新手,我正在尝试使用go语言准备客户端服务器并尝试编写代码,但是没有给出任何输出。它没有发出任何错误,只是在听。

请有人帮助我,我想使用go创建身份验证系统,其中服务器使用用户名密码对客户端进行身份验证。

服务器:

package main

import (
        "fmt"
        "net"
)

func main() {
        service := "0.0.0.0:8080"
        tcpAddr, err := net.ResolveTCPAddr("tcp", service)
        checkError(err)
        listener, err := net.ListenTCP("tcp", tcpAddr)
        checkError(err)
        for {
                conn, err := listener.Accept()
                //fmt.Println("Server listerning")
                _, err = conn.Read([]byte("HEAD"))
                if err != nil {
                        conn.Close()
                }
                if err != nil {
                        continue
                }
        }
}

func checkError(err error) {
        if err != nil {
                fmt.Println("Fatal error ", err.Error())
        }
}
Run Code Online (Sandbox Code Playgroud)

客户:

package main

import (
        "bufio"
        "fmt"
        "net"
        "os" …
Run Code Online (Sandbox Code Playgroud)

sockets go

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

将数据从字节切片解码到Uint32

package main

import (
        "bytes"
        "encoding/binary"
        "fmt"
)

func main() {
        aa := uint(0xFFFFFFFF)
        fmt.Println(aa)
        byteNewbuf := []byte{0xFF, 0xFF, 0xFF, 0xFF}
        buf := bytes.NewBuffer(byteNewbuf)
        tt, _ := binary.ReadUvarint(buf)
        fmt.Println(tt)
}
Run Code Online (Sandbox Code Playgroud)

需要将4字节数组转换为uint32,但为什么结果不一样?go verion:beta 1.1

go

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