rust |cpp |go

Go, Rust and C++ Side by Side

alexmercedcoder

Alex Merced

Posted on February 10, 2021

Go, Rust and C++ Side by Side

Why?

Recently I did a blog post where I show the basic syntax in Javascript, Python, Ruby and PHP side by side and got a pretty good response. Figured I'd do the same thing with some lower-level compiled languages. So in this post, I'll be showing how to do many basic things in Go, Rust and C++ (Keep in mind Go and Rust were created to be modern alternatives to situations you'd use C/C++/Java for speed and efficiency).

Hello World

C++

#include <iostream>

using namespace std;

int main() {
    std::cout << "Hello World \n";
}
Enter fullscreen mode Exit fullscreen mode

Go

package main

import "fmt"

func main(){
    fmt.Println("Hello World")
}

// go run HelloWorld.go
Enter fullscreen mode Exit fullscreen mode

Rust

fn main() {
    println!("Hello World!");
}

// rustc HelloWorld.rs && ./HelloWorld
Enter fullscreen mode Exit fullscreen mode

Declaring Variables

C++

#include <iostream>

using namespace std;

int main() {
    int num = 5;
    bool isItTrue = true;
    char str[] = "Hello World";
    std::cout << "Hello World \n" << str << endl;
}
Enter fullscreen mode Exit fullscreen mode

Go

package main

import "fmt"

func main(){
    var num int = 5
    var isItTrue bool = true
    var hello string = "Hello World"
    dynamicTyping := 6
    fmt.Println("Hello World")
}
Enter fullscreen mode Exit fullscreen mode

Rust

fn main() {
    let x = 5; //immutable
    let mut y = 6; //mutable
    const TYPED_CONSTANT:u32 = 100_000;
    let isItTrue:bool = true;
    let aString: str = "Hello World";

    println!("Hello World!");
}
Enter fullscreen mode Exit fullscreen mode

Arrays and Key/Value Pairs

C++

#include <iostream>

using namespace std;

int main() {
    int nums[] = {1,2,3,4,5,6};
    int five = nums[1] + nums[2];
    std::cout << "Hello World \n";
}
Enter fullscreen mode Exit fullscreen mode

Go

package main

import "fmt"

func main(){
    arr := [5]int{1,2,3,4,5}
    five := arr[1] + arr[2]
    fmt.Println("Hello World")
}
Enter fullscreen mode Exit fullscreen mode

Rust

fn main() {
    let nums: [i32; 5] = [1,2,3,4,5];
    let five: i32 = nums[1] + nums[2];

    println!("Hello World!");
}
Enter fullscreen mode Exit fullscreen mode

Functions

C++

#include <iostream>

using namespace std;

int addNums (int x, int y){
    return x + y;
}

int main() {
    int num = addNums(5, 6); //returns 11
    std::cout << "Hello World \n";
}
Enter fullscreen mode Exit fullscreen mode

Go

package main

import "fmt"

func addOne(x int, y int) int {
    return x + y
}

func main(){
    num := addOne(5,6)
    fmt.Println("Hello World")
}
Enter fullscreen mode Exit fullscreen mode

Rust

fn main() {
    let num: i32 = addOne(5,6);

    println!("Hello World!");
}

fn addOne(x: i32, y: i32) -> i32{
    x+y;
}
Enter fullscreen mode Exit fullscreen mode

OOP

C++

#include <iostream>
#include <string>
#include <cstring>

using namespace std;
class Dog {

    //property declaration
    public:
    string name;
    int age;

    //constructor sig
    Dog(string n, int a);

    //method sigs
    void bark();
};

Dog::Dog(string n, int a){
    name = n;
    age = a;
}

void Dog::bark(){
    std::cout << "Woof! \n";
}

int main() {
    Dog sparky("Sparky", 5);
    sparky.bark();
}
Enter fullscreen mode Exit fullscreen mode

Go

package main

import "fmt"

//Define a struct
type Dog struct {
    name string
    age int
}

// Struct Method
func (dog Dog) bark(){
    fmt.Printf(dog.name + " barks.")
}

func main(){
    sparky := Dog{"Sparky", 5}
    sparky.bark()
}
Enter fullscreen mode Exit fullscreen mode

Rust

// declare a struct
struct Dog {
    name: String,
    age: i32
}

// declare methods

impl Dog {
    fn bark(&self){
        println!("{} is barking", self.name);
    }
}

fn main() {
    let sparky = Dog{name: String::from("Sparky"), age: 5};

    println!("{} is of age {}", sparky.name, sparky.age);
    sparky.bark();
}
Enter fullscreen mode Exit fullscreen mode

In Conclusion

I hope this gives you a nice visual of what is the same and different between these languages.

💖 💪 🙅 🚩
alexmercedcoder
Alex Merced

Posted on February 10, 2021

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Go, Rust and C++ Side by Side
rust Go, Rust and C++ Side by Side

February 10, 2021

Rust looks awesome
rust Rust looks awesome

September 7, 2019