这个帖子不是为了证明一种语言比另一种语言更好。由于各种原因,每种编程语言都在软件开发社区中占有一席之地。 我的意图是强调 Go 和 Node 之间的差异,并且促进展示一种新的 Web 开发语言。 -- John Stamatakos
本文导航
-大体上的差异 …… 08%
-语法 …… 14%
-社区 …… 44%
-性能 …… 53%
-结论 …… 89%
-资料 …… 95%
编译自: https://medium.com/xo-tech/from-node-to-go-a-high-level-comparison-56c8b717324a#.byltlz535
作者: John Stamatakos
译者: trnhoe
// JavaScript 的逗号和分号
for (var i = 0; i < 10; i++) {
console.log(i);
}
// Go 使用最少数量标点
for i := 0; i < 10; i++ {
fmt.Println(i)
}
// JavaScript 赋值
var foo = "bar";
// Go 的赋值
var foo string //不使用类型推导
foo = "bar"
foo := "bar" //使用类型推导
const Bar = () => {};
module.exports = {
Bar
}
// Go 中的导出
package foo // 定义包名
func Bar (s string) string {
// Bar 将被导出
}
// Javascript 的导入
var foo = require(&#x27;foo&#x27;);
foo.bar();
// Go 的导入
import (
"fmt" // Go 的标准库部分
"github.com/foo/foo" // 直接从仓库导入
)
foo.Bar()
// Javascript - 返回多值
function foo() {
return {a: 1, b: 2};
}
const { a, b } = foo();
// Go - 返回多值
func foo() (int, int) {
return 1, 2
}
a, b := foo()
// Node 的错误处理
foo(&#x27;bar&#x27;, function(err, data) {
// 处理错误
}
//Go 的错误处理
foo, err := bar()
if err != nil {
// 用 defer、 panic、 recover 或 log.fatal 等等处理错误.
}
function foo (...args) {
console.log(args.length);
}
foo(); // 0
foo(1, 2, 3); // 3
func foo (args ...int) {
fmt.Println(len(args))
}
func main() {
foo() // 0
foo(1,2,3) // 3
}
var r = 0;
for (var c = 0; c < 1000000000; c++) {
r += c;
}
package main
func main() {
var r int
for c := 0; c < 1000000000; c++ {
r += c
}
}
sum(xrange(1000000000))
var fs = require(&#x27;fs&#x27;);
var wstream = fs.createWriteStream(&#x27;node&#x27;);
for (var c = 0; c < 1000000; ++c) {
wstream.write(c.toString());
}
wstream.end();
package main
import (
"bufio"
"os"
"strconv"
)
func main() {
file, _ := os.Create("go")
b := bufio.NewWriter(file)
for c := 0; c < 1000000; c++ {
num := strconv.Itoa(c)
b.WriteString(num)
}
file.Close()
}
with open("python", "a") as text_file:
for i in range(1000000):
text_file.write(str(i))
function bubbleSort(input) {
var n = input.length;
var swapped = true;
while (swapped) {
swapped = false;
for (var i = 0; i < n; i++) {
if (input[i - 1] > input ) {
[input, input[i - 1]] = [input[i - 1], input];
swapped = true;
}
}
}
}
for (var c = 0; c < 1000000; c++) {
const toBeSorted = [1, 3, 2, 4, 8, 6, 7, 2, 3, 0];
bubbleSort(toBeSorted);
}
package main
var toBeSorted [10]int = [10]int{1, 3, 2, 4, 8, 6, 7, 2, 3, 0}
func bubbleSort(input [10]int) {
n := len(input)
swapped := true
for swapped {
swapped = false
for i := 1; i < n; i++ {
if input[i-1] > input {
input, input[i-1] = input[i-1], input
swapped = true
}
}
}
}
func main() {
for c := 0; c < 1000000; c++ {
bubbleSort(toBeSorted)
}
}
def bubbleSort(input):
length = len(input)
swapped = True
while swapped:
swapped = False
for i in range(1,length):
if input[i - 1] > input:
input, input[i - 1] = input[i - 1], input
swapped = True
for i in range(1000000):
toBeSorted = [1, 3, 2, 4, 8, 6, 7, 2, 3, 0]
bubbleSort(toBeSorted)
欢迎光临 51学通信论坛2017新版 (http://bbs.51xuetongxin.com/) | Powered by Discuz! X3 |