Go is a concurrent lang 这是什么意思?
这是不是意味着它是一个C/C++/Java ..替代品?
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)
如何让程序等待,直到用户输入数据?
执行测试时出现以下错误。这以前工作。不知道该怎么做才能修复此错误。
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) 我想在文件名给出的文件中一次读取和处理 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相当陌生,因此我的问题似乎有点天真。
我有一个使用创建的切片
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需要一个切片作为第一个参数。
我已经尝试过了,但是它仅适用于字符串,在我的情况下不起作用。
我对文档有一些问题。
这是我的程序:
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)
什么是公钥?
以及如何使用它?
以及如何制作更大的钥匙?
我发现这是在Go书中,并且无法在语言的语法中找到它.有谁能解释一下?它本质上是某种"标签"吗?
return (<-reply).(int)
Run Code Online (Sandbox Code Playgroud) 我有这个代码.我希望输出:
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) 我正在学习带有指针接收器的接口、类型转换和方法。指针接收器方法背后的规则和术语让我感到困惑。让我用一个程序来证明我的困惑。
这是我的围棋程序。
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) 如何将双指针字符串转换为字符串?
在这个例子中我们可以直接传递字符串参数。但我的应用程序中有双指针字符串到字符串的要求。
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)