Kuest AI

Học mọi thứ, miễn phí

Bắt đầu miễn phí

Học Go nhanh hơn 10 lần với AI

Slices, lỗi, interfaces và goroutines được giải thích rõ ràng. Dán mã hoặc lỗi của bạn, Kuest sẽ giúp bạn hiểu Go mong đợi điều gì.

817,000+học sinh đã học cùng Kuest

chủ đề
10
Được tạo tại
Google, mã nguồn mở năm 2009
Loại
Biên dịch, kiểu tĩnh
Dùng cho
Máy chủ web, công cụ đám mây, CLI

Xem cách Kuest hướng dẫn

Kuest hỏi trước khi giải thích, để bạn tự suy nghĩ và nhớ lâu hơn.

Bạn: Vì sao func (c Counter) Inc() { c.n++ } không thay đổi bộ đếm của tôi?
Kuest: Hãy nhìn receiver: (c Counter). Khi gọi counter.Inc(), method nhận bộ đếm của bạn hay một bản sao?
Bạn: Vì nó không phải pointer, chắc là nó nhận một bản sao.
Kuest: Đúng vậy, value receiver là một bản sao. Vậy c.n++ thay đổi điều gì?
Bạn: Chỉ n của bản sao, rồi bị bỏ đi khi Inc trả về.
Kuest: Chính xác. Bạn sẽ đổi method thế nào để nó cập nhật bản gốc?
Bạn: Dùng pointer receiver: func (c *Counter) Inc() { c.n++ }. Khi đó nó thay đổi bộ đếm thật.

Value receivers nhận một bản sao; dùng pointer receiver khi method cần sửa đổi struct.

Học sinh tập trung học cùng Kuest

học sinh
817,000+
quốc gia
100+
  • Từ điểm C lên A môn hóa

    “Mình đã ngừng chép đáp án và bắt đầu thật sự hiểu bài. Điểm hóa của mình từ C lên A chỉ trong một học kỳ.”

    Học sinh lớp 11, Texas
  • 3 giờ → 40 phút

    “Ghi chú của mình biến thành bài kiểm tra chỉ trong vài giây. Việc từng mất cả đêm giờ chỉ mất bằng một tập phim.”

    Học sinh lớp 10, California
  • Cuối cùng cũng sẵn sàng cho SAT

    “Kế hoạch cho mình biết chính xác cần làm gì mỗi ngày. Lần đầu tiên, mình bước vào phòng thi với tâm trạng bình tĩnh.”

    Học sinh lớp 12, New York
  • Không bao giờ cho mình bỏ qua bước nào

    “Lúc đầu hơi phiền, nhưng đến ngày thi thì đúng là cứu cánh. Mình có thể làm mọi bài mà không cần đến nó.”

    Học sinh lớp 9, Ohio
  • Tốt hơn gia sư của mình

    “Có mặt cả lúc nửa đêm, kiên nhẫn, lại rẻ hơn một buổi học với gia sư cũ của mình.”

    Sinh viên năm nhất, Florida
  • Chuỗi của mình đã 94 ngày

    “Các nhiệm vụ chỉ mất mười phút. Mình làm trên xe buýt. Không hiểu sao giờ mình lại là người giải thích Sinh học cho bạn bè.”

    Học sinh lớp 11, Illinois
  • Cuối cùng mình cũng thông tiếng Tây Ban Nha

    “Nói thành tiếng với gia sư giúp mình sửa phát âm nhanh hơn cả một năm học trên lớp.”

    Học sinh lớp 10, Arizona
  • Tìm ra lỗ hổng chỉ trong một đêm

    “Bài kiểm tra lỗ hổng cho mình thấy là mình chưa từng hiểu mol. Sửa được trong 15 phút.”

    Học sinh lớp 11, Georgia
  • Phụ huynh đây: không còn khủng hoảng lúc 9 giờ tối

    “Con trai tôi nhận được hỗ trợ thực sự mà tôi không phải giả vờ nhớ Giải tích, và tôi có thể xem tiến bộ của con mỗi tuần.”

    Phụ huynh, Washington

Phương pháp

Cách học Go với Kuest

Go là ngôn ngữ nhỏ gọn, nên bạn có thể học phần lớn khá nhanh; kỹ năng thực sự là viết theo phong cách Go. Hãy thường xuyên viết các chương trình nhỏ, xử lý mọi lỗi một cách tường minh và tự lần theo slices cùng goroutines cho đến khi hành vi của chúng không còn khiến bạn bất ngờ.

  1. Học các nền tảngTrò chuyện với gia sư

    Hỏi về slices, structs hoặc interfaces và trả lời các câu hỏi kiểm tra của Kuest trước khi tiếp tục.

  2. Mang lỗi của bạn đếnChụp ảnh

    Dán mã cùng lỗi compiler hoặc panic, hoặc chụp màn hình, Kuest sẽ giúp bạn đọc hiểu chúng.

  3. Quan sát slices và goroutinesBảng hướng dẫn

    Dùng bảng học để hình dung mảng nền của một slice và cách goroutines truyền giá trị qua channels.

  4. Dự đoán hành viCâu đố

    Làm câu đố về việc append tác động thế nào đến len và cap, hoặc goroutine nào in ra trước.

  5. Ghi nhớ idiomsThẻ ghi nhớ

    Ôn lại các idioms Go như if err != nil, defer và mẫu comma-ok bằng flashcards ngắt quãng.

  6. Củng cố phần còn yếuTìm lỗ hổng kiến thức

    Để Kuest tìm ra điều bạn thường bỏ sót, như pointer receivers hoặc channels, rồi luyện tập chúng.

Bạn sẽ học gì

Chạm vào một chủ đề để học ngay.

  1. 01Packages, main và go runCấu trúc chương trình với package main, imports và func main
  2. 02Biến và kiểu dữ liệuKhai báo giá trị bằng var và :=, tìm hiểu giá trị mặc định và các kiểu cơ bản
  3. 03Luồng điều khiểnDùng if, switch và vòng lặp for duy nhất dưới mọi hình thức
  4. 04Hàm và nhiều giá trị trả vềTrả về nhiều giá trị, bao gồm một giá trị và một lỗi
  5. 05Mảng, slices và mapsDùng slices với append, len và cap, đồng thời lưu dữ liệu khóa-giá trị trong maps
  6. 06Structs và methodsNhóm dữ liệu trong structs và gắn methods với value hoặc pointer receivers
  7. 07InterfacesĐịnh nghĩa hành vi bằng interfaces mà các kiểu tự động đáp ứng
  8. 08Xử lý lỗiKiểm tra if err != nil, bọc lỗi và trả về lỗi rõ ràng
  9. 09Goroutines và channelsChạy công việc đồng thời và phối hợp chúng bằng channels và sync.WaitGroup
  10. 10Modules và kiểm thửQuản lý dependencies bằng go mod và viết kiểm thử với package testing

Thử hỏi

Chạm vào một câu hỏi và Kuest sẽ bắt đầu hướng dẫn từng bước.

Giúp bạn chuẩn bị cho

  • Các khóa học backend và hệ thống
  • Công việc dự án và thực tập

Một tháng Kuest có giá thấp hơn một giờ học với gia sư

Kiên nhẫn như nhau, mọi lúc, mọi môn học. Hoặc bạn có thể dùng gói miễn phí mãi mãi.

Gia sư riêng

$40–80cho một giờ

  • Cần đặt lịch trước nhiều ngày
  • Mỗi buổi chỉ học một môn
  • Dừng khi hết giờ

Kuest Plus

$10một tháng, thanh toán hằng năm

  • Mọi môn học và kỳ thi trên trang này
  • Bất kỳ lúc nào, lâu tùy bạn cần
  • Câu đố, thẻ ghi nhớ, podcast và đề thi thử

Giải đáp thắc mắc

Buổi học tiếp theo của bạn bắt đầu tại đây

Gói miễn phí mãi mãi. Không cần thẻ.

Bắt đầu miễn phí