Trình biên dịch Go online

Viết, biên dịch, chạy và gỡ lỗi code Go trực tuyến trong IDE đầy đủ tính năng. Làm việc với nhiều tệp, lưu workspace và cộng tác theo thời gian thực mà không cần cài đặt.

Thư viện cài đặt sẵn
🚀 206,970 tổng số lượt thực thi (799 trong tháng này)
Nhúng
Kết quả

Luyện Go với thử thách lập trình

Giải các bài tập thực tế ngay trên trình soạn thảo này: chạy kiểm thử mẫu, nộp bài và nhận đánh giá code từ AI.

Tất cả thử thách Go
Dễ

Rectangle Perimeter

Compute the perimeter of a rectangle from its sides.

Bạn sẽ học Số họcGiá trị trả về
BeginnerLearning-pathVariables
Dễ

Days in a Month

Return how many days a month has, including leap years.

Bạn sẽ học Quy tắc lịchHàm phụ trợ
BeginnerConditionsFunctionsLearning-path
Dễ

Trung Bình Của Ba Số

Tính trung bình cộng của ba số nguyên.

Bạn sẽ học Số họcPhép chia
BeginnerLearning-pathVariables
Dễ

Tích vô hướng của hai vector

Nhân hai vector theo từng phần tử rồi cộng kết quả lại, phép tính cốt lõi của mọi nơ-ron.

Bạn sẽ học VectorTích vô hướng
Mạng nơ-rontrí tuệ nhân tạohọc máy
Dễ

Số Lớn Nhất Trong Ba Số

Chọn số lớn nhất trong ba số mà không dùng hàm max có sẵn.

Bạn sẽ học So sánhKết hợp điều kiện
BeginnerConditionsLearning-path
Dễ

Kiểm Tra Số Nguyên Tố

Xác định xem một số có phải là số nguyên tố hay không.

Bạn sẽ học Tính chia hếtTối ưu vòng lặp
BeginnerLoopsNumbersStudent-beginner
Dễ

Tam giác số

Xây dựng một tam giác các số tăng dần.

Bạn sẽ học Hàng tăng dầnBiến đếm qua các hàng
BeginnerLearning-pathNested-loopsPatterns
Dễ

Số Armstrong

Kiểm tra một số có bằng tổng các chữ số của nó lũy thừa lên số lượng chữ số hay không.

Bạn sẽ học Tách chữ sốLũy thừa
BeginnerNumbersStudent-beginner
Dễ

Row Sums

Add up every row of a grid.

Bạn sẽ học Danh sách 2 chiềuVòng lặp lồng nhau
BeginnerGridsLearning-path
Dễ

Min and Max Together

Find the smallest and largest value in one pass.

Bạn sẽ học Một lần duyệtTrả về nhiều giá trị
ArraysBeginnerFunctionsLearning-path
Dễ

Count Pairs With a Sum

Count pairs of positions whose values add up to a target.

Bạn sẽ học Cặp chỉ sốTránh đếm trùng
ArraysBeginnerLearning-pathNested-loops
Dễ

Hollow Square

Draw the outline of a square with * characters.

Bạn sẽ học Nhận biết viềnTạo chuỗi
BeginnerLearning-pathNested-loopsPatterns

🐹 Giới thiệu về Trình thực thi Go trực tuyến này

CodeUtility Go Executor cho phép bạn viết và chạy mã Go trực tiếp trên trình duyệt - không cần cài đặt, thiết lập hay môi trường cục bộ. Công cụ chạy trong sandbox an toàn, hỗ trợ các phiên bản trình biên dịch Go thật 1.19, 1.20, và 1.21.

Công cụ này biên dịch và thực thi các chương trình Go thật trên đám mây, mang đến một môi trường Go đúng nghĩa. Bạn có thể thử các đoạn mã ngắn, thử nghiệm với package, và khám phá khả năng đồng thời mạnh mẽ của Go với goroutine và channel.

Rất phù hợp để học và luyện tập các khái niệm cốt lõi của Go như biến, hàm, struct, slice, map, interface và xử lý lỗi - tất cả mà không cần cài đặt công cụ nào trên máy.

Dù bạn mới tìm hiểu Go, đang kiểm thử logic backend, hay học cách hoạt động của đồng thời, CodeUtility Go Executor mang đến cách chạy mã Go tức thì, nhanh, gọn, ngay trên trình duyệt.

Không chỉ là công cụ chạy mã

Sử dụng trình soạn thảo nhiều tệp, terminal thực thi biệt lập, thư viện riêng theo môi trường chạy, không gian làm việc lâu dài, tính năng chia sẻ và cộng tác theo thời gian thực ngay trong cùng một trình thực thi.

Cách sử dụng trình thực thi này?

Chọn môi trường chạy, mở hoặc tạo tệp, viết mã rồi nhấn Chạy. Kết quả xuất hiện trong terminal; người dùng đã đăng nhập có thể lưu tệp trong không gian làm việc, cài thư viện và cộng tác qua liên kết chia sẻ.

  1. Chọn phiên bản rồi chỉnh sửa tệp hiện tại hoặc mở một tệp khác trong không gian làm việc.
  2. Chạy mã, nhập dữ liệu trong terminal khi được yêu cầu và xem lại lịch sử chạy đã lưu.
  3. Sử dụng thư viện, công cụ không gian làm việc, chia sẻ và trò chuyện khi tác vụ cần nhiều hơn một đoạn mã.

💡 Kiến thức cơ bản về Go & ví dụ bạn có thể thử ở trên

1. Khai báo biến và hằng số

Dùng var hoặc := để khai báo biến. Dùng const cho hằng số.

package main

var x int = 10
const Pi = 3.14

func main() {
    name := "Alice"
    isActive := true
    println(x, Pi, name, isActive)
}

2. Cấu trúc điều kiện (if / switch)

Go hỗ trợ các câu lệnh if-else và switch với cú pháp gọn gàng.

x := 2
if x == 1 {
    println("Một")
} else if x == 2 {
    println("Hai")
} else {
    println("Khác")
}

switch x {
case 1:
    println("Một")
case 2:
    println("Hai")
default:
    println("Khác")
}

3. Vòng lặp

Go chỉ có vòng lặp for, nhưng có thể hoạt động như vòng lặp while.

for i := 0; i < 3; i++ {
    println(i)
}

n := 3
for n > 0 {
    println(n)
    n--
}

4. Mảng

Mảng có kích thước cố định. Dùng slice cho danh sách động.

var nums = [3]int{10, 20, 30}
println(nums[1])

5. Thao tác với slice

Dùng slice và các hàm dựng sẵn append, len, copy, cùng cú pháp cắt lát.

fruits := []string{"apple", "banana"}
fruits = append(fruits, "cherry")
fruits = fruits[1:]  // slice
println(len(fruits))

for _, fruit := range fruits {
    println(fruit)
}

6. Nhập/Xuất trên console

Dùng fmt.Print, fmt.Scan, và fmt.Println.

import "fmt"

var name string
fmt.Print("Nhập tên của bạn: ")
fmt.Scan(&name)
fmt.Println("Xin chào", name)

7. Hàm

Khai báo hàm với func và có thể trả về nhiều giá trị.

func greet(name string) string {
    return "Xin chào, " + name
}

message := greet("Alice")
println(message)

8. Map

Map là kho lưu trữ theo cặp khóa-giá trị. Khởi tạo với make().

ages := map[string]int{"Alice": 30}
ages["Bob"] = 25
println(ages["Alice"])

9. Xử lý lỗi

Go dùng nhiều giá trị trả về để truyền lỗi thay vì ngoại lệ.

import "errors"

func fail() error {
    return errors.New("đã có sự cố")
}

err := fail()
if err != nil {
    println(err.Error())
}

10. I/O tệp

Dùng các package os và io/ioutil để đọc/ghi tệp.

import (
  "fmt"
  "os"
  "io/ioutil"
)

ioutil.WriteFile("file.txt", []byte("Xin chào tệp"), 0644)

data, _ := ioutil.ReadFile("file.txt")
fmt.Println(string(data))

11. Xử lý chuỗi

Dùng package strings cho các thao tác với chuỗi.

import "strings"

text := "  Hello World  "
println(strings.TrimSpace(text))
println(strings.ToUpper(text))
println(strings.ReplaceAll(text, "Hello", "Hi"))

words := strings.Split(text, " ")
fmt.Println(words)

12. Struct & Đối tượng

Dùng struct để định nghĩa kiểu tùy chỉnh cùng các phương thức.

type Person struct {
  Name string
}

func (p Person) Greet() string {
  return "Xin chào, tôi là " + p.Name
}

p := Person{Name: "Alice"}
println(p.Greet())

13. Tham chiếu (Con trỏ)

Go hỗ trợ con trỏ với * và &.

x := 10
ptr := &x
*ptr = 20
println(x) // 20