I want to debug a Go program in Visual Studio Code 1.24.0 which goes like this:
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World")
var input int
fmt.Scanf("%d", &input)
fmt.Printf("Hello %v", input)
}
Run Code Online (Sandbox Code Playgroud)
When start debugging, the program waits for input. I tried giving input via Debug Console, but it didn't work. Properties like externalConsole don't seem to work in launch.json for Go. Any inputs?
我正在尝试做的事情: 我试图通过三个阶段来理解/构建go管道。阶段1向通道A写入。阶段2具有多个go例程。每个go例程都从通道A读取,执行一些操作并将结果写入通道Bn(通道B1,B2..Bn)。第3阶段创建了n(=第2阶段中的通道总数)go例程,每个go例程从第2阶段的一个Channel中读取。它基于https://blog.golang.org/pipelines中描述的有限并行性
问题: 管道按预期工作正常,操作在go例程之间分配。但是,当我进行转义分析时,发现从一个阶段发送到另一个阶段的通道参数被报告为“泄漏参数”。
代码段: 为简单起见,我发布的代码显示第1阶段通道的创建,第2阶段则打印从第1阶段读取的值。
package main
import "fmt"
func createStageOne(numOfJobs int) <-chan int {
stageOneChannel := make(chan int)
go func(nJobs int) {
for i := 0; i < nJobs; i++ {
stageOneChannel <- i
}
close(stageOneChannel)
}(numOfJobs)
return stageOneChannel
} // stageOneChannel closes and go routine exits once nJobs are completed
func createStageTwo(in <-chan int, completionFlag chan struct{}) {
go func() {
for n := range in {
fmt.Println("Received from stage 1 channel ", n)
} …Run Code Online (Sandbox Code Playgroud) 我有一个客户端服务器应用程序。在客户端(我无法访问客户端代码),间歇性地发生套接字异常,显示“ java.net.SocketException:连接重置”。它不是“java.net.SocketException:连接由对等方重置”。有了这些信息,我可以断定问题出在客户端吗?
这是一个理解在下面的场景中实现get函数的正确方法的问题.
我得到了以下课程:
class A
{
string m_sName;
public:
A(): m_sName ("this") {}
const string& getName() const
{
return m_sName;
}
};
Run Code Online (Sandbox Code Playgroud)
上面执行get函数的问题是,它允许客户端修改数据成员.那是:
int main ()
{
A a;
const string& data_mem = a.getName();
string& s = const_cast<string&> (data_mem);
s += " Pointer";
cout << a.getName().c_str () << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出将是:这个指针
我知道我们可以使用引用参数来获取函数或只是返回字符串.但两者都会创造新的对象.
有一个更好的方法吗?或者禁止const_cast(在用户定义的类上)?