Online Go Compiler

Write, compile, run, and debug Go code online in a full-featured browser IDE. Work with multiple files, save your workspace, and collaborate in real time - no setup required.

🚀 206,970 การดำเนินการทั้งหมด (799 ในเดือนนี้)
ผลลัพธ์

ฝึก Go ด้วยโจทย์เขียนโค้ด

แก้โจทย์จริงใน editor นี้: รันทดสอบตัวอย่าง ส่งคำตอบ และรับรีวิวโค้ดจาก AI

โจทย์ Go ทั้งหมด
ง่าย

Rectangle Perimeter

Compute the perimeter of a rectangle from its sides.

คุณจะได้เรียนรู้ เลขคณิตค่าที่คืนกลับ
BeginnerLearning-pathVariables
ง่าย

Distance Between Points

Compute the straight-line distance between two points.

คุณจะได้เรียนรู้ ทฤษฎีบทพีทาโกรัสรากที่สอง
BeginnerFunctionsLearning-pathmath
ง่าย

Average of Three

Average three whole numbers.

คุณจะได้เรียนรู้ เลขคณิตการหาร
BeginnerLearning-pathVariables
ง่าย

ผลคูณจุดของเวกเตอร์สองตัว

คูณเวกเตอร์สองตัวทีละสมาชิกแล้วรวมผลลัพธ์ ซึ่งเป็นการคำนวณหลักของทุกนิวรอน

คุณจะได้เรียนรู้ เวกเตอร์ผลคูณจุด
โครงข่ายประสาทเทียมaiการเรียนรู้ของเครื่อง
ง่าย

Largest of Three

Pick the largest of three numbers without a built-in max.

คุณจะได้เรียนรู้ การเปรียบเทียบรวมเงื่อนไข
BeginnerConditionsLearning-path
ง่าย

ตรวจสอบจำนวนเฉพาะ

ตัดสินว่าตัวเลขเป็นจำนวนเฉพาะหรือไม่

คุณจะได้เรียนรู้ การหารลงตัวปรับลูปให้เร็วขึ้น
BeginnerLoopsNumbersStudent-beginner
ง่าย

สามเหลี่ยมตัวเลข

สร้างสามเหลี่ยมที่มีตัวเลขเพิ่มขึ้นในแต่ละแถว

คุณจะได้เรียนรู้ แถวที่ยาวขึ้นตัวนับข้ามแถว
BeginnerLearning-pathNested-loopsPatterns
ง่าย

ตัวเลขอาร์มสตรอง

ตรวจสอบว่าตัวเลขเท่ากับผลรวมของแต่ละหลักยกกำลังจำนวนหลักหรือไม่

คุณจะได้เรียนรู้ แยกหลักตัวเลขเลขยกกำลัง
BeginnerNumbersStudent-beginner
ง่าย

Row Sums

Add up every row of a grid.

คุณจะได้เรียนรู้ ลิสต์ 2 มิติลูปซ้อน
BeginnerGridsLearning-path
ง่าย

Min and Max Together

Find the smallest and largest value in one pass.

คุณจะได้เรียนรู้ ไล่รอบเดียวคืนหลายค่า
ArraysBeginnerFunctionsLearning-path
ง่าย

นับคู่ที่มีผลรวมเท่ากับค่าที่กำหนด

นับจำนวนคู่ของตำแหน่งที่ค่ารวมกันได้เท่ากับเป้าหมายที่กำหนด

คุณจะได้เรียนรู้ คู่ดัชนีหลีกเลี่ยงการนับซ้ำ
ArraysBeginnerLearning-pathNested-loops
ง่าย

Hollow Square

Draw the outline of a square with * characters.

คุณจะได้เรียนรู้ ตรวจขอบสร้างสตริง
BeginnerLearning-pathNested-loopsPatterns

🐹 เกี่ยวกับตัวรัน Go ออนไลน์นี้

CodeUtility Go Executor ให้คุณเขียนและรันโค้ด Go ได้โดยตรงในเบราว์เซอร์ - ไม่ต้องติดตั้ง ตั้งค่า หรือมีสภาพแวดล้อมโลคัลใดๆ ใช้งานบนแซนด์บ็อกซ์ที่ปลอดภัยและรองรับ คอมไพเลอร์ Go เวอร์ชันจริง 1.19, 1.20 และ 1.21

เครื่องมือนี้คอมไพล์และรันโปรแกรม Go จริงบนคลาวด์ ให้สภาพแวดล้อม Go ที่แท้จริง คุณสามารถทดสอบโค้ดสั้นๆ ทดลองกับแพ็กเกจ และสำรวจความสามารถด้าน concurrency อันทรงพลังของ Go ด้วย goroutine และ channel

เหมาะอย่างยิ่งสำหรับการเรียนรู้และฝึกแนวคิดหลักของ Go เช่น ตัวแปร ฟังก์ชัน สตรักต์ สไลซ์ แมป อินเทอร์เฟซ และการจัดการข้อผิดพลาด - ทั้งหมดนี้โดยไม่ต้องติดตั้งเครื่องมือใดๆ บนเครื่อง

ไม่ว่าคุณจะเริ่มต้นกับ Go เป็นครั้งแรก กำลังทดสอบตรรกะแบ็กเอนด์ หรือเรียนรู้การทำงานของ concurrency CodeUtility Go Executor มอบวิธีการรันโค้ด Go ที่เรียบง่าย รวดเร็ว และทำงานบนเบราว์เซอร์ได้ทันที

มากกว่าเครื่องมือรันโค้ด

ใช้ตัวแก้ไขหลายไฟล์ เทอร์มินัลประมวลผลแบบแยกส่วน ไลบรารีเฉพาะรันไทม์ พื้นที่ทำงานถาวร การแชร์ และการทำงานร่วมกันแบบเรียลไทม์ได้จากตัวประมวลผลเดียวกัน

วิธีใช้ตัวประมวลผลนี้

เลือกรันไทม์ เปิดหรือสร้างไฟล์ เขียนโค้ด แล้วเลือกเรียกใช้ ผลลัพธ์จะแสดงในเทอร์มินัล ส่วนผู้ใช้ที่ลงชื่อเข้าใช้สามารถเก็บไฟล์ในพื้นที่ทำงาน ติดตั้งไลบรารี และทำงานร่วมกันผ่านการแชร์ได้

  1. เลือกเวอร์ชันแล้วแก้ไขไฟล์ปัจจุบัน หรือเปิดไฟล์อื่นในพื้นที่ทำงาน
  2. เรียกใช้โค้ด ป้อนข้อมูลในเทอร์มินัลเมื่อระบบร้องขอ และตรวจสอบประวัติการเรียกใช้ที่บันทึกไว้
  3. ใช้ไลบรารี เครื่องมือพื้นที่ทำงาน การแชร์ และแชท เมื่องานของคุณต้องใช้โค้ดมากกว่าหนึ่งส่วน

💡 พื้นฐาน Go และตัวอย่างที่คุณลองได้ด้านบน

1. การประกาศตัวแปรและค่าคงที่

ใช้ var หรือ := เพื่อประกาศตัวแปร ใช้ const สำหรับค่าคงที่

package main

var x int = 10
const Pi = 3.14

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

2. คำสั่งเงื่อนไข (if / switch)

Go รองรับคำสั่ง if-else และ switch ด้วยไวยากรณ์ที่กระชับ

x := 2
if x == 1 {
    println("หนึ่ง")
} else if x == 2 {
    println("สอง")
} else {
    println("อื่น")
}

switch x {
case 1:
    println("หนึ่ง")
case 2:
    println("สอง")
default:
    println("อื่น")
}

3. ลูป

Go มีลูปแบบเดียวคือ for แต่สามารถใช้แทนลูป while ได้

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

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

4. อาร์เรย์

อาร์เรย์มีขนาดตายตัว ใช้สไลซ์สำหรับรายการที่ปรับขนาดได้

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

5. การจัดการสไลซ์

ใช้สไลซ์และฟังก์ชันในตัว append, len, copy และไวยากรณ์การตัดสไลซ์

fruits := []string{"apple", "banana"}
fruits = append(fruits, "cherry")
fruits = fruits[1:]  // สไลซ์
println(len(fruits))

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

6. การรับส่งข้อมูลทางคอนโซล

ใช้ fmt.Print, fmt.Scan และ fmt.Println

import "fmt"

var name string
fmt.Print("กรุณากรอกชื่อของคุณ: ")
fmt.Scan(&name)
fmt.Println("สวัสดี", name)

7. ฟังก์ชัน

ประกาศฟังก์ชันด้วย func และสามารถคืนค่าหลายค่าได้

func greet(name string) string {
    return "สวัสดี, " + name
}

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

8. แมป

แมปเป็นโครงสร้างเก็บคู่คีย์-ค่า ประกาศด้วย make().

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

9. การจัดการข้อผิดพลาด

Go ใช้การคืนค่าหลายค่าเพื่อส่งข้อผิดพลาด แทนการใช้ข้อยกเว้น

import "errors"

func fail() error {
    return errors.New("เกิดข้อผิดพลาดบางอย่าง")
}

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

10. การอ่านเขียนไฟล์

ใช้แพ็กเกจ os และ io/ioutil เพื่ออ่าน/เขียนไฟล์

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

ioutil.WriteFile("file.txt", []byte("Hello File"), 0644)

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

11. การจัดการสตริง

ใช้แพ็กเกจ strings สำหรับการจัดการสตริง

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. สตรักต์และอ็อบเจ็กต์

ใช้สตรักต์เพื่อกำหนดชนิดข้อมูลแบบกำหนดเองพร้อมเมธอด

type Person struct {
  Name string
}

func (p Person) Greet() string {
  return "สวัสดี ฉันชื่อ " + p.Name
}

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

13. การอ้างอิง (พอยน์เตอร์)

Go รองรับพอยน์เตอร์โดยใช้ * และ &.

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