我尝试了Go Tour 练习#71
如果它运行go run 71_hang.go ok
,它工作正常.
但是,如果您使用go run 71_hang.go nogood
,它将永远运行.
唯一的区别是额外fmt.Print("")
的default
的select
语句.
我不确定,但我怀疑某种无限循环和竞争条件?这是我的解决方案.
注意:Go并没有死锁 throw: all goroutines are asleep - deadlock!
package main
import (
"fmt"
"os"
)
type Fetcher interface {
// Fetch returns the body of URL and
// a slice of URLs found on that page.
Fetch(url string) (body string, urls []string, err error)
}
func crawl(todo Todo, fetcher Fetcher,
todoList chan Todo, done chan bool) { …
Run Code Online (Sandbox Code Playgroud) 我在Java中有一堆Integer,我想知道是否还有其他方法可以将"最后推送的项目"增加一个而不首先将其加入.
我目前的解决方案是
Stack<Integer> stack = new Stack<Integer>();
stack.push(1);
stack.push(2); // Increment 2 to 3
Integer last = stack.pop();
stack.push(last+1);
Run Code Online (Sandbox Code Playgroud)
我尝试了以下但没有工作
Integer last = stack.peek();
last+=1;
Run Code Online (Sandbox Code Playgroud)
我认为它会起作用,因为last是对堆栈中最后一个元素的引用,它会增加.
我试图取代-
,并:
与?
只在中间(第二)部分由分隔___
(3下划线)
输入:
aaa___bb-bb:bbb___cc-cc:ccc
d-d___d-ddd:d-d___e-e:e
Run Code Online (Sandbox Code Playgroud)
输出:
aaa___bb?bb?bbb___cc-cc:ccc
d-d___d?ddd?d?d___e-e:e
Run Code Online (Sandbox Code Playgroud)
我试过下面的sed
命令,但它只替换-:
了中间部分的最后一次出现
echo "aaa___bb-bb:bbb___cc-cc:ccc
d-d___d-ddd:d-d___e-e:e" | sed "s|\(___[^_]*\)[-:]\([^_]*___\)|\1?\2|g"
Run Code Online (Sandbox Code Playgroud)
输出:
aaa___bb-bb?bbb___cc-cc:ccc
d-d___d-ddd:d?d___e-e:e
Run Code Online (Sandbox Code Playgroud)
我不仅限于使用sed
.awk
,tr
等等也很好.