小编pet*_*rSO的帖子

"Go is a lang lang"这是什么意思?

Go is a concurrent lang 这是什么意思?

这是不是意味着它是一个C/C++/Java ..替代品?

concurrency go

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

如何让 GO 程序等待用户输入?

package main

import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    fmt.Println("insert y value here: ")
    input := bufio.NewScanner(os.Stdin)
    fmt.Println(input.Text)
}
Run Code Online (Sandbox Code Playgroud)

如何让程序等待,直到用户输入数据?

go

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

找不到软件包的数学/位

执行测试时出现以下错误。这以前工作。不知道该怎么做才能修复此错误。

golang.org/x/crypto/ripemd160/ripemd160block.go:12:2: cannot find package "math/bits" in any of:
    /usr/local/Cellar/go@1.8/1.8.7/libexec/src/math/bits (from $GOROOT)
Run Code Online (Sandbox Code Playgroud)

go

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

以固定步幅大小将字节读入 Go 缓冲区

我想在文件名给出的文件中一次读取和处理 1024 个字节。我不明白如何正确构建外循环,尤其是适应缓冲区包含少于 1024 字节的最终步幅

我尝试过的:

fs, _ := os.Open(filename)
defer fs.Close()
n := 1024 // 1kb
buff := make([]byte, n)
for {
    buff = make([]byte, n) // is this initialized correctly?
    n1, err := fs.Read(buff)
    if err != nil {
        if err == io.EOF {
            break
        }
        fmt.Println(err)
        break
    }
    fmt.Println("read n1 bytes...", n1)
    fmt.Println(buff)
}
Run Code Online (Sandbox Code Playgroud)

我看过以下资源:

go

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

如何在切片前添加int

我对Go相当陌生,因此我的问题似乎有点天真。

我有一个使用创建的切片

var x []int;
for i := 2; i < 10; i += 2 {
    x = append(x, i);
}
Run Code Online (Sandbox Code Playgroud)

我想在此切片前添加一个整数,例如

x = append(2, x)
Run Code Online (Sandbox Code Playgroud)

但显然它不起作用,因为append需要一个切片作为第一个参数。

我已经尝试过了,但是它仅适用于字符串,在我的情况下不起作用。

arrays go slice prepend

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

openpgp 和 golang

我对文档有一些问题。

这是我的程序:

package main

import (
    "bytes"
    "code.google.com/p/go.crypto/openpgp"
    "encoding/base64"
    "fmt"
)

func main() {

    var entity *openpgp.Entity
    entity, err := openpgp.NewEntity("bussiere", "test", "bussiere@gmail.com", nil)
    if err != nil {

    }

    var (
        buffer bytes.Buffer
    )

    entity.SerializePrivate(&buffer, nil)
    data := base64.StdEncoding.EncodeToString([]byte(buffer.String()))

    fmt.Printf("%q\n", data)

    entity.Serialize(&buffer)
    data2 := base64.StdEncoding.EncodeToString([]byte(buffer.String()))

    fmt.Printf("%q\n", data2)

    entity.PrivateKey.Serialize(&buffer)
    data3 := base64.StdEncoding.EncodeToString([]byte(buffer.String()))

    fmt.Printf("%q\n", data3)

    entity.PrimaryKey.Serialize(&buffer)
    data4 := base64.StdEncoding.EncodeToString([]byte(buffer.String()))

    fmt.Printf("%q\n", data4)

    //fmt.Printf(buffer.String())

}
Run Code Online (Sandbox Code Playgroud)

以下是数据:

https://gist.github.com/bussiere/5159890
Run Code Online (Sandbox Code Playgroud)

这是要点上的代码:

https://gist.github.com/bussiere/5159897
Run Code Online (Sandbox Code Playgroud)

什么是公钥?

以及如何使用它?

以及如何制作更大的钥匙?

pgp go openpgp

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

解释这个Go语句

我发现这是在Go书中,并且无法在语言的语法中找到它.有谁能解释一下?它本质上是某种"标签"吗?

return (<-reply).(int)
Run Code Online (Sandbox Code Playgroud)

go

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

如何将方法用作goroutine函数

我有这个代码.我希望输出:

hello : 1 
world : 2
Run Code Online (Sandbox Code Playgroud)

但它输出:

world : 2
world : 2
Run Code Online (Sandbox Code Playgroud)

我的代码有问题吗?

package main

import (
    "fmt"
    "time"
)

type Task struct {
    name string
    data int32
}

func (this *Task) PrintData() {
    fmt.Println(this.name, ":", this.data)
}

func main() {
    tasks := []Task{{"hello", 1}, {"world", 2}}
    for _, task := range tasks {
        go task.PrintData()
    }
    time.Sleep(time.Second * 5000)
}
Run Code Online (Sandbox Code Playgroud)

go goroutine

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

类型断言后如何使用指针接收器调用方法?

我正在学习带有指针接收器的接口、类型转换和方法。指针接收器方法背后的规则和术语让我感到困惑。让我用一个程序来证明我的困惑。

这是我的围棋程序。

package main

import "fmt"

type Employee struct {
    Name string
}

func (e Employee) Hi() {
    fmt.Printf("Hi! I am %s.\n", e.Name)
}

func (e *Employee) Hello() {
    fmt.Printf("Hello! I am %s.\n", e.Name)
}

func main() {
    var a Employee = Employee{"Alice"}
    a.Hi()
    a.Hello()

    var b interface{} = Employee{"Bob"}
    b.(Employee).Hi()
    // b.(Employee).Hello()
}
Run Code Online (Sandbox Code Playgroud)

这是输出。

Hi! I am Alice.
Hello! I am Alice.
Hi! I am Bob.
Run Code Online (Sandbox Code Playgroud)

如果删除最后注释掉的行,则会出现此错误。

# command-line-arguments
./foo.go:24: cannot call pointer method on b.(Employee)
./foo.go:24: cannot take …
Run Code Online (Sandbox Code Playgroud)

pointers interface type-conversion go

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

恐慌:接口转换:接口{}是**字符串,而不是字符串

如何将双指针字符串转换为字符串?

在这个例子中我们可以直接传递字符串参数。但我的应用程序中有双指针字符串到字符串的要求。

package main

import (
    "fmt"
)

func main() {
    s := "ss"
    a := &s
    Modify(&a)
}

func Modify(s interface{}) {
    fmt.Println(s)

}
Run Code Online (Sandbox Code Playgroud)

游乐场:https://play.golang.org/p/d4hrG9LzLNO

string pointers interface go

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