小编zla*_*ski的帖子

除了错误处理之外,为什么Go会增加恐慌和恢复?

为什么Go最终会采用恐慌/恢复的异常处理,当语言如此惯用并且是错误代码的强烈提倡者时?Go的设计者有哪些场景不会被错误代码处理并且需要恐慌/恢复?

我理解约定说限制恐慌/恢复,但运行时是否也限制它们不能用作C++中的常规throw/catch?

error-handling exception-handling go

11
推荐指数
1
解决办法
1210
查看次数

CUDA/PTX 32位与64位

CUDA编译器可以选择生成32位或64位PTX.这些有什么区别?对于x86来说,NVidia GPU实际上有32位和64位ISA吗?或者它只与主机代码有关?

cuda nvcc ptx

6
推荐指数
1
解决办法
2274
查看次数

为什么Clojure的core.reducers比懒惰的集合函数更快

在Reducers的许多资源中(如Rich Hickey的规范博客文章),它声称减速器比常规集合函数((map ... (filter ...))等)更快,因为开销更少.

什么是避免的额外开销?IIUC即使是懒惰的集合函数也只能将原始序列移动一次.计算中间结果的细节有何不同?

在实施Clojure中有助于理解差异的相关位置的指针也将是最有帮助的

functional-programming clojure reducers

6
推荐指数
2
解决办法
408
查看次数

TS中,定义的方法名后面加问号

我理解使用 TS?来声明可选参数、字段、可选方法等。但是我看到代码放在?类中定义的方法之后,如下所示:

class Foo {
  public myMethod?(...) {
    ... code
  }
}
Run Code Online (Sandbox Code Playgroud)

为什么这个有用?

typescript

6
推荐指数
1
解决办法
679
查看次数

为什么要定义值而不是指针的方法?

查看示例Go代码,有些事情并不一致.许多代码在指针类型上定义它们的方法,例如:

func (p *parser) parse () {...}
Run Code Online (Sandbox Code Playgroud)

但是其他一些代码只在类型上定义方法,而不是指向它的指针:

func (s scanner) scan () {...}
Run Code Online (Sandbox Code Playgroud)

有没有充分的理由去做后者?通过值而不是指针传递对象真的更有效吗?

一个原因是"我无法更改此对象",但无论如何这都是大对象的问题(您是否会通过值传递大结构只是为了标记它不能通过方法更改?)

go

5
推荐指数
1
解决办法
150
查看次数

在命令行和游乐场中进行整数溢出设置

这个程序在我的机器上运行正常(go1.2.1 linux/amd64):

package main

import "fmt"

const bigint = 1<<62

func main() {
    fmt.Println(bigint)
}
Run Code Online (Sandbox Code Playgroud)

但是在go操场上,它会出现溢出错误 - http://play.golang.org/p/lAUwLwOIVR

似乎我的构建配置为64位用于整数常量,操场配置为32位.

但是规范说实现必须为常量提供至少256位的精度?

另请参阅我的其他问题中的代码- 扫描仪标准包具有代码:

const GoWhitespace = 1<<'\t' | 1<<'\n' | 1<<'\r' | 1<<' '
Run Code Online (Sandbox Code Playgroud)

由于空间为32,因此根本不适用于32位游乐场.

怎么会这样?

go

5
推荐指数
1
解决办法
123
查看次数

无符号整数溢出

关于无符号整数溢出的规范说:

对于无符号整数值,操作+, - ,*和<<以2n为模计算,其中n是无符号整数类型的位宽.松散地说,这些无符号整数运算在溢出时丢弃高位,程序可能依赖于''环绕''.

我尝试测试它,但结果不一致 - http://play.golang.org/p/sJxtSHbigT:

package main

import "fmt"

func main() {
    fmt.Println("test")
    var num uint32 = 1 << 35
}
Run Code Online (Sandbox Code Playgroud)

这给出了错误:

prog.go:7: constant 34359738368 overflows uint32
 [process exited with non-zero status]
Run Code Online (Sandbox Code Playgroud)

但根据规范应该没有错误,而是我应该看到0.

go

2
推荐指数
1
解决办法
1263
查看次数

HTML和CSS:使用垂直滚动条水平拆分页面

我找不到如何做一些非常简单的事情.我想将页面水平划分为两个窗格.在窗格之间有一些边界(可以调整大小或不重视我不在乎).上部窗格可以垂直滚动,而下部窗格保持固定.

我试过bootstrap粘固定页脚,但我没有顶部的卷轴.

我最终的目标是在底部固定窗格中插入所有类型的链接,这将有助于导航到顶部窗格中的位置.

提前致谢

html css

2
推荐指数
1
解决办法
9422
查看次数

Clojure core.async go-blocks 什么时候有用?

由于运行go-blocks的线程池相当小,似乎不推荐在go-blocks内部进行一些操作。例如,阻塞 I/O 是不好的,而进行大量计算的操作是不好的。在 go-blocks 中运行的一些此类操作将占用整个线程池,而其他 go-blocks 根本无法运行。

Clojure 程序员使用 go-blocks 的最常见场景是什么?它主要用于处理已经异步的库吗?将使用回调的库/代码转换为更可口的通道变体?我会很感兴趣地看到实际示例,其中带有停放通道操作的 go-blocks 比线程更可取。

concurrency clojure

2
推荐指数
1
解决办法
563
查看次数