如何用 go 写 ruby

Go 学习笔记,持续更新。 原文请参考: http://kimh.github.io/blog/en/go/how-can-i-do-x-in-ruby-with-go-part-1/

Create Array

Ruby:

1
2
numbers = [1,2,3]
fruits = ["apple", "banana", "grape"]

Go:

1
2
numbers := []int{1,2,3}
fruits := []string{"apple", "banana", "grape"}

Append an element to array

Ruby:

1
2
numbers = [1,2,3]
numbers << 4

Go:

1
2
numbers := []int{1,2,3}
numbers.append(numbers, 4)

Concatenate arryas

Ruby:

1
2
3
numbers1 = [1,2,3]
numbers2 = [4,5,6]
numbers1 = numbers1 + numbers2

Go:

1
2
3
numbers1 := []int{1,2,3}
numbers2 := []int{4,5,6}
numbers1 = append(numbers1, numbers2...)

Go:

1
2
numbers1 := []int{1,2,3}
numbers1 = append(numbers1, 4, 5, 6)

Create multi dimension array

Ruby:

1
multi_array = [[1,2,3],[4,5,6]]

Go:

1
multi_array := [][]int{{1, 2, 3}, {4,5,6}}

Create empty array

Ruby:

1
array = []

Go:

1
array := []int

Iterate an array

Ruby:

1
2
numbers = [1,2,3]
numbets.each {|num| puts num }

Go:

1
2
3
4
5
numbers := []int{1,2,3}
for _, num := range numbers {
fmt.Println(num)
}

Looping N times

Ruby:

1
5.times {|num| puts num}

Go:

1
2
3
for num := 0; num < 5; num ++ {
fmt.Println(num)
}

Clone array

Ruby:

1
new_array = old_array.clone

Go:

1
2
3
new_array := make([]int, len(old_array))
copy(new_array, old_array)

Accessing elements of array by range

Ruby:

1
2
numbers = [1,2,3,4]
numbers[0..3]

Go:

1
2
go_array := []int{1,2,3,4}
go_array[0:4]

Compare array

Ruby:

1
2
3
if array1 == array2
puts "Same array"
end

Go:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
go_array := []int{1, 2, 3, 4, 5, 6, 7}
bb_array := []int{3, 2, 3, 4, 5, 6, 7}
same := true
for i, ele := range go_array {
if bb_array[i] != ele {
same = false
break
}
}
if same == true {
fmt.Println("Same slice")
}

Check if array include an element

Ruby:

1
2
3
4
5
fruits = ["apple", "banana", "grape"]
if fruits.include?("apple")
puts "include!"
end

Go:

1
2
3
4
5
6
7
8
9
10
11
12
13
include := false
fruits := []string{"apple", "banana", "grape"}
for _, ele := range fruits {
if ele == "apple" {
include = true
break
}
}
if include == true {
fmt.Println("Included")
}

Define a method with variable length argument

Ruby:

1
2
3
def (*args)
args.each {|arg| puts arg}
end

Go:

1
2
3
4
5
6
7
func (arguments ...int) {
for _, arg := range arguments {
fmt.Println(arg)
}
}
foo(1,2,3,4,5)

Nil checking

Ruby:

1
2
3
if val.nil?
puts "val is nil"
end

Go:

1
2
3
4
5
6
7
8
9
10
11
var str string
if str =="" {
fmt.Println("str is empty")
}
var i int
if i == 0 {
fmt.Println("i is zero")
}