我想知道如何在 Visual Studio Code 上运行简单的 Scheme 代码。
我已经安装了一个名为 Scheme 的扩展,但是下一步是什么..
我没有找到有关如何运行代码或开发人员联系方式的扩展的任何详细信息...
我正在尝试使用for循环,它不断地将字符串发送到不同goroutine读取的不同通道.然而,它给了我错误"所有goroutines都睡着了 - 死锁!" 为什么会这样?我搜索了一些答案,但我找不到这种情况的答案.
func main() {
var chans []chan string
for i := 0; i < 3; i++ {
chans = append(chans, make(chan string))
}
for i := 0; i < 3; i++ {
go sendString(chans[i])
}
for str := range chans[0] {
fmt.Print(str)
}
}
func sendString(ch chan string) {
ch <- "a"
ch <- "b"
ch <- "c"
ch <- "d"
}
Run Code Online (Sandbox Code Playgroud)
错误在这里.它打印"abcd",然后生成错误,如果我删除循环打印,程序不会生成错误.
abcdfatal error: all goroutines are asleep - deadlock!
goroutine 1 [chan receive]:
main.main()
C:/Users/YuanZheng …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 BigDecimal 来打印 Pi,但事实证明它不准确
BigDecimal d = new BigDecimal(Math.PI);
System.out.println(d);
Run Code Online (Sandbox Code Playgroud)
上面的答案给了我“3.141592653589793115997963468544185161590576171875”但“3.141592653589793”后面的数字不正确
这是怎么回事?我可以使用 bigdecimal 打印 PI 吗?
我试图通过将该切片的指针传递给函数AppendVertex将顶点附加到顶点切片中,我知道如何通过使用len函数获取数组的长度,但是有没有办法获得长度指针数组?
type Vertex struct {
X int
Y int
}
func main() {
var v []Vertex
fmt.Println(len(v))
appendVertex(&v)
fmt.Println(len(v))
}
func appendVertex(v *[]Vertex) {
*v = append(*v, Vertex{1, 1})
fmt.Println(len(v))
}
Run Code Online (Sandbox Code Playgroud)
这个的结果是
prog.go:22:16: invalid argument v (type *[]Vertex) for len
Run Code Online (Sandbox Code Playgroud)
我还通过将指针传递给切片来做另一个版本,但是切片的大小没有改变,切片是不是参考类型结构?为什么这里的尺寸没有改变
type Vertex struct {
X int
Y int
}
func main() {
var v []*Vertex
fmt.Println(len(v))
appendVertex(v)
fmt.Println(len(v))
}
func appendVertex(v []*Vertex) {
v = append(v, &Vertex{1, 1})
fmt.Println(len(v))
}
?
Run Code Online (Sandbox Code Playgroud)
第二个结果是
0
1
0
Run Code Online (Sandbox Code Playgroud)