0Pricing
Go Academy · บทเรียน

ไลบรารีตรวจสอบความถูกต้อง

ตรวจสอบสตรักต์ด้วยแท็ก

ไลบรารีตรวจสอบความถูกต้อง เป็นบทเรียน Go Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Go Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงต้องตรวจสอบโครงสร้าง

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

แท็ก validate

ไลบรารียอดนิยมอย่าง go-playground/validator จะอ่านแท็ก validate ที่อธิบายกฎสำหรับแต่ละฟิลด์

ฟิลด์หนึ่งอาจมี validate:"required,email"

การพึ่งพาภายนอก

ไลบรารีตรวจสอบความถูกต้องเป็นแพ็กเกจจากภายนอก ไม่ได้อยู่ในไลบรารีมาตรฐาน คุณเพิ่มแพ็กเกจเหล่านี้ด้วย go get github.com/go-playground/validator/v10 แต่ไม่สามารถเรียกใช้ในโค้ดตัวอย่างแบบทำงานได้ในตัวเองที่นี่

การกำหนดกฎ

แท็ก validate ของแต่ละฟิลด์จะแสดงรายการกฎโดยคั่นด้วยจุลภาค กฎที่ใช้บ่อย ได้แก่ required, email, min, max และ len

ตัวอย่างโครงสร้าง

โครงสร้างที่ผ่านการตรวจสอบความถูกต้องโดยทั่วไป (เป็นแนวคิด ต้องใช้แพ็กเกจ validator จึงจะเรียกใช้ได้)

type SignupForm struct {
	Email    string "validate:\"required,email\""
	Password string "validate:\"required,min=8\""
	Age      int    "validate:\"gte=18,lte=120\""
}

การเรียกใช้การตรวจสอบความถูกต้อง

คุณสร้างอินสแตนซ์ของตัวตรวจสอบ แล้วเรียกใช้ Validate.Struct(form) เมธอดนี้จะคืนค่าข้อผิดพลาดหากมีกฎใดไม่ผ่าน หรือคืนค่า nil หากผ่านทั้งหมด

import "github.com/go-playground/validator/v10"

var validate = validator.New()

func check(f SignupForm) error {
	return validate.Struct(f)
}

การอ่านข้อผิดพลาด

เมื่อไม่ผ่าน ข้อผิดพลาดที่คืนมาสามารถแปลงชนิดเป็น validator.ValidationErrors ซึ่งเป็นสไลซ์ที่อธิบายกฎที่ไม่ผ่านแต่ละข้อ ได้แก่ ฟิลด์ใดและเงื่อนไขใดที่ไม่ผ่าน

กฎในตัวที่ใช้บ่อย

กฎที่มีประโยชน์ ได้แก่:

  • required - ต้องไม่เป็นค่าศูนย์
  • email - รูปแบบอีเมลต้องถูกต้อง
  • min / max - ขอบเขตความยาวหรือตัวเลข
  • gte / lte - การเปรียบเทียบตัวเลข
  • oneof - ต้องเป็นหนึ่งในรายการที่กำหนด

การตรวจสอบโครงสร้างซ้อนกัน

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

เหตุใดจึงใช้ไลบรารี

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

ทางเลือกแบบทำเอง

ในกรณีง่าย ๆ คุณสามารถตรวจสอบความถูกต้องด้วยตนเองโดยไม่ใช้ไลบรารีได้ แต่สำหรับฟิลด์จำนวนมากและกฎที่ซับซ้อน การใช้ไลบรารีจะเหมาะกว่า วิธีนี้ทำงานได้ทุกที่ เพราะใช้เฉพาะไลบรารีมาตรฐาน

package main

import (
	"errors"
	"fmt"
	"strings"
)

func validateEmail(e string) error {
	if !strings.Contains(e, "@") {
		return errors.New("invalid email")
	}
	return nil
}

func main() {
	fmt.Println(validateEmail("bad"))
	fmt.Println(validateEmail("a@b.com"))
}

ตรวจสอบอย่างรวดเร็ว

ไลบรารีตรวจสอบความถูกต้องอย่าง go-playground/validator รู้ได้อย่างไรว่าต้องใช้กฎใดกับแต่ละฟิลด์

สรุปทบทวน

ไลบรารีตรวจสอบความถูกต้อง:

  • อ่านแท็ก validate เพื่อใช้กฎ
  • เป็นไลบรารีจากภายนอก (เช่น go-playground/validator) และเพิ่มด้วย go get
  • คืนค่าข้อผิดพลาดที่แสดงรายการกฎที่ไม่ผ่านแต่ละข้อ
  • กรณีง่าย ๆ สามารถตรวจสอบความถูกต้องด้วยตนเองได้

คำถามที่พบบ่อย

บทเรียน “ไลบรารีตรวจสอบความถูกต้อง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ไลบรารีตรวจสอบความถูกต้อง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Go Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Go Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ไลบรารีตรวจสอบความถูกต้อง”

ตรวจสอบสตรักต์ด้วยแท็ก คุณปฏิบัติ Go Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Go Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Go Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “ไลบรารีตรวจสอบความถูกต้อง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Go Academy นี้ได้ไหม

ได้ บทเรียน Go Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. แท็กสตรักต์คืออะไร
  2. แท็ก JSON
  3. ไลบรารีตรวจสอบความถูกต้อง
  4. การแยกวิเคราะห์แท็กแบบกำหนดเอง
← กลับไปที่ Go Academy