是不是只有我有问题,还是“D编程语言”的第68页有问题?在本页中,作者讨论了D的if-else语句的语法以及它们是如何嵌套的。他首先给出了这个例子:
if(a == b)
if(b == c)
writeln("all are equal!");
else
writeln("a is different from b. Or is that so?");
然后他指出,else将绑定到第二个if。然后他说,为了让else绑定到第一个if,应该像这样使用大括号:
if(a == b) {
if(b == c)
我刚刚又开始用Go编程(在低级语言方面没有任何经验),我注意到函数表达式与函数声明(go1.18.5 linux/amd64)不同。
例如,这起作用(很明显):
package main
import "fmt"
func main() {
fmt.Println("Do stuff")
}
但这会输出一个错误:
package main
import "fmt"
var main = func() {
fmt.Println("Do stuff")
}
./prog.go:3:8: imported and no
我有一个linux服务器,它记录了以下mcelog错误:
Hardware event. This is not a software error.
MCE 0
CPU 0 BANK 20
MISC 800000
TIME 1476167381 Tue Oct 11 06:29:41 2016
MCG status:
MCi status:
Corrected error
MCi_MISC register valid
MCA: BUS error: 0 0 Level-3 Generic Generic Other-transaction
Request-did-not-timeout
QP
我开始学习围棋编程,通过在线教程。我使用Windows命令提示符。但是,在我输入set GOOS = darwin然后使用go env打印环境变量之后,GOOS没有被设置为GOOS=darwin,但仍然是默认的GOOS=windows。
这是我得到的。有人能告诉我哪里出错了吗?我不能在GOOS上做改变吗?
C:\GoPath\src\palindrome>set GOOS = darwin
C:\GoPath\src\palindrome>go env
set GOARCH=amd64
set GOBIN=
set GOEXE=.exe
set GOHOSTARCH=amd64
因此,在我的编程经验中,我遇到了静态类型化语言的两种类型注释:我将它们称为“前”和“后”。C-样式语言使用的格式
int i = 5
而大多数非c族语言都使用这种格式。
var c:int = 5
前者的例子是C,C++,Java;后者的例子是Scala,Haxe,Go。
在某些人看来,这似乎是肤浅的,但我的问题是:每种风格的优点是什么?为什么要用一个而另一个呢?为什么C从一开始就采用这种风格?