我对rsync的创建路径有问题。
x := filepath.Join("home", "my_name", "need_folder", ".")
fmt.Println(x)
Run Code Online (Sandbox Code Playgroud)
我得到了"home/my_name/need_folder",但是需要"home/my_name/need_folder/.",没有concat怎么解决?在名称为“。”的linux文件夹中。不是不可能。
谢谢!
我正在探索使用固定密钥同时访问地图的可能性,而没有锁定以提高性能.我以前用切片探索过类似的东西,似乎有效:
func TestConcurrentSlice(t *testing.T) {
fixed := []int{1, 2, 3}
wg := &sync.WaitGroup{}
for i := 0; i < len(fixed); i++ {
idx := i
wg.Add(1)
go func() {
defer wg.Done()
fixed[idx]++
}()
}
wg.Wait()
fmt.Printf("%v\n", fixed)
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将通过-race测试.
这让我有信心用固定大小的地图(固定数量的键)实现同样的事情,因为我假设如果键的数量没有改变,那么下划线数组(在地图中)不需要扩展,所以它我们可以安全地访问不同的例行程序中的不同密钥(不同的内存位置).所以我写了这个测试:
type simpleStruct struct {
val int
}
func TestConcurrentAccessMap(t *testing.T) {
fixed := map[string]*simpleStruct{
"a": {0},
"b": {0},
}
wg := &sync.WaitGroup{}
// here I use array instead of iterating the map to avoid read access
keys := []string{"a", "b"} …Run Code Online (Sandbox Code Playgroud) 我想在 golang 中计算 100 阶乘。这是我正在使用的代码。
var fact big.Int
fact.MulRange(1, 100)
Run Code Online (Sandbox Code Playgroud)
打印输出给出
30414093201713378043612608166064768844377641568960512000000000000
但是谷歌搜索100!给出9.332622e+157。我想这可能是因为我使用的数据类型(或者可能不是)。我该如何解决?提前致谢。
编辑:所以我在 go playground 中运行了这段代码,它给出了正确的答案。这是由于我的 PC 上的限制吗?另外,当我将其转换为字符串并对其进行迭代时,它会显示不同的数字
str := fact.String()
for _,val := range str{
fmt.Print(val)
}
Run Code Online (Sandbox Code Playgroud)
这是所有的代码
package main
import (
"fmt"
"math/big"
)
func main() {
var fact big.Int
fact.MulRange(1, 100)
fmt.Println(fact)
n := fact.String()
fmt.Println(n) //printing 100!
sum := 0
for _, i := range n {
sum += int(i) //sum of each digits in 100!
}
fmt.Println(sum)
}
Run Code Online (Sandbox Code Playgroud)
这是 go env …
我使用页码和限制在 Go 中创建了分页。在哪里Limit & Page Number are INT
我创建了如下分页:
MONGO_SESSION.Find(nil).Skip(pageNumber*limit).Limit(limit).Sort("_id").All(&RETURN_STRUCT)
Run Code Online (Sandbox Code Playgroud)
它工作正常。但是当我发送页码或限制为零时。默认情况下 mongo DB 返回所有记录,因为没有什么可以跳过和限制的。
所以我的问题是,在零限制和零页码的情况下什么是好的做法。
练习 1:发送所有数据。不要发送错误响应。
实践二:发送错误响应说“页数和限制不能为零”
注意:我不能硬编码限制或页码。
任何建议将不胜感激。
我有一个功能列表和它们各自的间隔.我想同时以其间隔运行每个函数.
在JavaScript中,我写了类似的东西:
maps.forEach(({fn, interval}) => {
setInterval(fn, interval)
})
Run Code Online (Sandbox Code Playgroud)
如何在Golang中实现此功能?
abc := []byte{'a', 'c', 'b'}
sort.Slice(abc[1:], func(i, j int) bool {
return abc[i] < abc[j]
})
fmt.Println(string(abc)) //print acb
Run Code Online (Sandbox Code Playgroud)
上面的代码没有abc正确排序。为什么?
我正在尝试暂停和恢复 groutine。我知道我可以sleep跑步,但我正在寻找就像一个按钮“暂停/恢复”而不是一个计时器。
这是我的尝试。我正在使用通道的阻塞功能来暂停,并select根据通道值切换要执行的内容。但是,输出总是Running在我的情况下。
func main() {
ctx := wctx{}
go func(ctx wctx) {
for {
time.Sleep(1 * time.Second)
select {
case <-ctx.pause:
fmt.Print("Paused")
<-ctx.pause
case <-ctx.resume:
fmt.Print("Resumed")
default:
fmt.Print("Running \n")
}
}
}(ctx)
ctx.pause <- struct{}{}
ctx.resume <- struct{}{}
}
type wctx struct {
pause chan struct{}
resume chan struct{}
}
Run Code Online (Sandbox Code Playgroud) 我是 golang 的新手,有一个基本问题。我从网上的一个例子中提取了以下代码
func (d Direction) String() string {
return [...]string{"North", "East", "South", "West"}[d]
}
Run Code Online (Sandbox Code Playgroud)
我很困惑[d]方法体中的作用是什么?
在下面的代码中:
package main
import "fmt"
func main() {
for i := 0; i <= 9; i++ {
go func() {
fmt.Println(i)
}()
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
code$
code$ go install github.com/myhub/cs61a
code$ bin/cs61a
code$
Run Code Online (Sandbox Code Playgroud)
以上程序不提供任何输出。
1)他们是否i在 10 个 go-routines 之间进行单一内存位置的数据竞争?
2)为什么上面的代码不打印自由变量的值i?
我正在尝试使用 RC4 在 Go 中加密/解密一些数据。我发现 Go 在 crypto/rc4 包中提供了 rc4 算法。我尝试使用该包加密/解密数据,但密文和解密的明文不是我所期望的。
我RC4在线工具像比较这个,但我敢肯定,Go的RC4包有一些问题。因为在我用 Go rc4 加密明文并解密密文后,解密的明文'不是我加密的。我应该找其他图书馆吗?
我运行的代码是这样的。
package main
import (
"crypto/rc4"
"fmt"
"log"
)
func main() {
c, err := rc4.NewCipher([]byte("dsadsad"))
if err != nil {
log.Fatalln(err)
}
src := []byte("asdsad")
dst := make([]byte, len(src))
fmt.Println("Plaintext: ", src)
c.XORKeyStream(dst, src)
c.XORKeyStream(src, dst)
fmt.Println("Ciphertext: ", dst)
fmt.Println("Plaintext': ", src)
}
Run Code Online (Sandbox Code Playgroud)
输出是这样的
Plaintext: [97 115 100 115 97 100]
Ciphertext: [98 41 227 117 93 79]
Plaintext': [111 154 128 …Run Code Online (Sandbox Code Playgroud) go ×10
concurrency ×3
goroutine ×2
slice ×2
arrays ×1
bigint ×1
channel ×1
dictionary ×1
encryption ×1
filepath ×1
loops ×1
math ×1
mgo ×1
mongodb ×1
rc4-cipher ×1
scheduler ×1
sorting ×1
string ×1
timer ×1