<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: เชาวรินทร์ ศักดิ์เศรษฐ</title>
    <description>The latest articles on DEV Community by เชาวรินทร์ ศักดิ์เศรษฐ (@__00).</description>
    <link>https://dev.to/__00</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3707985%2F60bf330c-66f0-4cc4-b379-51bd4ce0c93e.png</url>
      <title>DEV Community: เชาวรินทร์ ศักดิ์เศรษฐ</title>
      <link>https://dev.to/__00</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/__00"/>
    <language>en</language>
    <item>
      <title>เพิ่มประสิทธิภาพการทำงาน ด้วย Agile process</title>
      <dc:creator>เชาวรินทร์ ศักดิ์เศรษฐ</dc:creator>
      <pubDate>Thu, 15 Jan 2026 06:28:07 +0000</pubDate>
      <link>https://dev.to/__00/ephimprasiththiphaaphkaarthamngaan-dwy-agile-process-307o</link>
      <guid>https://dev.to/__00/ephimprasiththiphaaphkaarthamngaan-dwy-agile-process-307o</guid>
      <description>&lt;p&gt;&lt;strong&gt;1. Agile คือ&lt;/strong&gt;&lt;br&gt;
แนวคิด (Mindset) และรูปแบบการทำงานที่เน้น "ความคล่องตัว" โดยการแบ่งงานใหญ่ให้เป็นชิ้นเล็กๆ แล้วส่งมอบงานอย่างรวดเร็วเป็นรอบๆ (Iterations) เพื่อรับคำติชม (Feedback) มาปรับปรุงได้ทันที&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. ความแตกต่างระหว่าง Waterfall และ Agile&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Waterfall ลักษณะการทำงาน Analysis &amp;gt; Design &amp;gt; Implementation &amp;gt; Testing &amp;gt; Deployment (Develop) &amp;gt; Release &amp;amp; Maintenance โดยตัว Product ที่ออกมา ลูกค้าจะได้เจอหลังจากจบ Process ทั้งหมด ซึ่งในบางครั้งอาจจะไม่ตอบโจทย์กับความต้องการของลูกค้าได้ โดยเวลาและต้นทุนไม่ได้ถูก Fix ไว้ ซึ่งหากลูกค้าต้องการเพิ่มอะไร ต้องมีการเพิ่มเวลาหรืออาจจะมีต้นทุนที่เพิ่มขึ้น&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Agile การย่อยการทำงานแต่ละรอบให้สั้นลงเป็น Sprint (sprint = รอบระยะการทำงานแต่ละรอบ) โดยแต่ละรอบจะมีการ Replan ซ้ำๆ เป็นการเทสไปทำไป เพื่อตอบโจทย์ความต้องการของลูกค้า และมี Value อะไรต่อลูกค้า ในแต่ละ Sprint ที่ได้จะไม่มีคำว่าผิดพลาดแต่จะเป็นการเรียนรู้ โดยสิ่งที่ได้แต่ละ sprint จะเป็น Knowledge และ Practice&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. ประวัติการทำงานของ Agile&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhjpfhh6mn4a49mkjz234.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhjpfhh6mn4a49mkjz234.png" alt=" " width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1️⃣ Individuals and Interactions&lt;br&gt;
ให้ความสำคัญกับ “คนและการสื่อสาร” มากกว่า “กระบวนการและเครื่องมือ”&lt;br&gt;
➡️ ทีมที่คุยกันดี เข้าใจกัน แก้ปัญหาร่วมกัน สำคัญกว่าการยึดติดขั้นตอนหรือเครื่องมือมากเกินไป&lt;br&gt;
2️⃣ Working Product&lt;br&gt;
ให้ความสำคัญกับ “ผลงานที่ใช้งานได้จริง” มากกว่า “เอกสารที่ละเอียดมาก”&lt;br&gt;
➡️ ลูกค้าอยากเห็นของที่ใช้ได้จริง เอกสารมีประโยชน์ แต่ไม่ควรทำจนลืมสร้างผลงาน&lt;br&gt;
3️⃣ Customer Collaboration&lt;br&gt;
ให้ความสำคัญกับ “การร่วมมือกับลูกค้า” มากกว่า “การต่อรองตามสัญญา”&lt;br&gt;
➡️ คุยกับลูกค้าบ่อย ๆ ปรับตามความต้องการจริงไม่ใช่ยึดสัญญาเป๊ะจนแก้ไขอะไรไม่ได้&lt;br&gt;
4️⃣ Responding to Change&lt;br&gt;
ให้ความสำคัญกับ “การปรับตัวต่อการเปลี่ยนแปลง” มากกว่า “ทำตามแผนเดิมอย่างเคร่งครัด”&lt;br&gt;
➡️ โลกเปลี่ยน ความต้องการเปลี่ยน Agile สนับสนุนให้ปรับแผนได้ตลอด&lt;/p&gt;

&lt;p&gt;Agile Manifesto มี 12 Agile principle&lt;/p&gt;

&lt;p&gt;1.Continuous delivery :ส่งมอบคุณค่าลูกค้าอย่างต่อเนื่อง&lt;br&gt;
2.Welcome change : ความเปลี่ยนแปลงคือความได้เปรียบในการแข่งขัน&lt;br&gt;
3.Delivery Frequenly :ควรทำให้ระยะเวลาระหว่างส่งมอบนั้นสั้นที่สุดเท่าที่เป็นไปได้&lt;br&gt;
4.Work together Daily :ฝ่ายธุรกิจและนักพัฒนาต้องทำงานร่วมกันทุกวัน&lt;br&gt;
5.Trust motivated Individuals : สมาชิกเข้าใจและมีจุดมุ่งหมายร่วมกันและไว้ใจกันในการทำงาน&lt;br&gt;
6.Face to face communicate : การสื่อสารที่ดีที่สุดคือการพูดคุยแบบซึ่งหน้า&lt;br&gt;
7.Working stuff = Progress : ผลิตภัณฑ์ที่ใช้งานได้จริงเป็นการวัดความก้าวหน้าของโครงการ&lt;br&gt;
8.Sustainable Pace : สามารถรักษาอัตราความเร็วในการทำงา่นร่วมกันให้คงที่ไปได้ตลอด&lt;br&gt;
9.High Standards=Agility : ความเป็นเลิศทางเทคนิคและงานออกแบบที่ดีอย่างต่อเนื่องช่วยเพิ่มความเป็น agile&lt;br&gt;
10.Keep it simple : ความเรียบง่ายหรือศิลปะในการทำงานอย่างพอเพียงสำคัญอย่างยิ่ง เริ่มจากง่าย ๆใช้ได้จริงไม่ซับซ้อน&lt;br&gt;
11.Self-Organising teams : งานที่ตอบโจทย์ลูกค้าได้ เกิดจากทีมที่บริหารจัดการตัวเองได้&lt;br&gt;
12.Reflect and Adjust : ทีมต้องนำบทเรียนที่ผ่านมาเพื่อใช้พัฒนาความมีประสิทธิผลของทีม&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Framework ของ Agile&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;คือ "ชุดเครื่องมือหรือระบบ" ที่นำแนวคิด Agile มาทำให้เป็นรูปธรรม&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Scrum (ยอดนิยมอันดับ 1)
เน้นการทำงานเป็นรอบสั้นๆ เรียกว่า Sprint (1-4 สัปดาห์) โดยมีบทบาทชัดเจน:
Product Owner (PO): ตัดสินใจว่า "จะทำอะไร" (จัดลำดับความสำคัญของงาน)
Scrum Master: คนคอยเคลียร์อุปสรรคและดูแลให้ทีมทำตามกระบวนการ Scrum
Development Team: คนลงมือทำ (เช่น คุณที่เขียน Go)
พิธีกรรมสำคัญ: Daily Stand-up (ประชุมเช้า 15 นาที), Sprint Planning, และ Sprint Retrospective (คุยกันว่ารอบที่ผ่านมามีอะไรต้องปรับปรุง)&lt;/li&gt;
&lt;li&gt;Kanban
เน้น "การไหลของงาน" (Flow) ไม่มีการแบ่งรอบเวลา (Sprint) เหมือน Scrum แต่จะเน้นจัดการงานที่กำลังทำอยู่ (Work in Progress - WIP) ไม่ให้เยอะเกินไป
ใช้ Kanban Board (To Do -&amp;gt; Doing -&amp;gt; Done)
เหมาะกับงานที่เข้ามาเรื่อยๆ เช่น งาน Support, Maintenance หรือทีมที่ต้องการความยืดหยุ่นสูง&lt;/li&gt;
&lt;li&gt;XP (Extreme Programming)
เน้นไปที่ "คุณภาพของโค้ด" แบบสุดโต่ง เหมาะมากสำหรับเหล่านักพัฒนา:
Pair Programming: เขียนโค้ด 2 คนต่อ 1 จอ
Test-Driven Development (TDD): เขียน Test ก่อนเขียนโค้ดจริง (ใน Go มี Testing Package ที่ดีมาก รองรับเรื่องนี้สุดๆ)
Refactoring: ปรับปรุงโค้ดตลอดเวลา&lt;/li&gt;
&lt;li&gt;Lean Software Development
เน้นการ "ตัดส่วนเกิน" (Eliminate Waste) อะไรที่ไม่สร้างมูลค่าให้ลูกค้า ให้ตัดทิ้ง เพื่อให้ส่งมอบงานได้เร็วที่สุด&lt;/li&gt;
&lt;li&gt;สำหรับองค์กรใหญ่ (Scaling Agile)
เมื่อบริษัทมีทีมหลายสิบทีม เขาจะใช้ Framework ที่ใหญ่ขึ้น เช่น:
SAFe (Scaled Agile Framework): การจัดการ Agile ระดับบริษัทใหญ่ๆ
Spotify Model: แบ่งคนเป็น Squads, Tribes, Chapters และ Guilds (เน้นความเป็นอิสระของทีม)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;5. หลักการส่งมอบ ผลิตภัณฑ์สู่ลูกค้า(Release product)&lt;/strong&gt;&lt;br&gt;
1.มีคุณภาพ (Quantity)ที่ดี&lt;br&gt;
2.มีคุณค่าต่อผู้ใช้ (Value)&lt;br&gt;
3.อาจจะมีข้อจำกัดได้แก่ ต้นทุน(Cost)|ทรัพยากร (Resource)|ระยะเวลา (Schedule)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. หลักการส่งมอบ ผลิตภัณฑ์สู่ลูกค้า(Release product)&lt;/strong&gt;&lt;br&gt;
🔹 1. Roles (บทบาทหน้าที่)&lt;br&gt;
1️⃣ Product Owner (PO)&lt;br&gt;
ตัวแทนของลูกค้า / ธุรกิจ&lt;br&gt;
 กำหนดวิสัยทัศน์ของ Product&lt;br&gt;
 จัดลำดับความสำคัญของงาน (Product Backlog)&lt;br&gt;
 ตัดสินใจว่า “อะไรสำคัญที่สุด”&lt;br&gt;
 รับงาน/ไม่รับงาน (Accept / Reject)&lt;br&gt;
📌 โฟกัส: คุณค่าทางธุรกิจ&lt;br&gt;
2️⃣ Scrum Master&lt;br&gt;
โค้ชและผู้ดูแลกระบวนการ Scrum&lt;br&gt;
 ช่วยให้ทีมเข้าใจและทำ Scrum ถูกต้อง&lt;br&gt;
 แก้อุปสรรค (Impediments)&lt;br&gt;
 ประสานงานกับคนนอกทีม&lt;br&gt;
 ปกป้องทีมจากสิ่งรบกวน&lt;br&gt;
📌 โฟกัส: กระบวนการ + ทีม&lt;br&gt;
3️⃣ Development Team&lt;br&gt;
ทีมที่ลงมือทำงานจริง&lt;br&gt;
 พัฒนา ออกแบบ ทดสอบ&lt;br&gt;
 วางแผนงานใน Sprint&lt;br&gt;
 รับผิดชอบผลลัพธ์ร่วมกัน&lt;br&gt;
 ไม่มีหัวหน้าภายในทีม&lt;br&gt;
📌 โฟกัส: ส่งมอบงานที่ใช้งานได้&lt;br&gt;
🔹 2. Artifacts (สิ่งที่ใช้ใน Agile / Scrum)&lt;br&gt;
1️⃣ Product Backlog&lt;br&gt;
 รายการงานทั้งหมดของ Product&lt;br&gt;
 เรียงตามความสำคัญ&lt;br&gt;
 เปลี่ยนแปลงได้ตลอด&lt;br&gt;
ตัวอย่าง:ฟีเจอร์ใหม่ / แก้บั๊ก / ปรับ UX&lt;br&gt;
2️⃣ Sprint Backlog&lt;br&gt;
 งานที่ทีมเลือกมาทำใน Sprint นี้&lt;br&gt;
 แยกเป็น Task ชัดเจน&lt;br&gt;
 ทีมเป็นเจ้าของ&lt;br&gt;
3️⃣ Increment&lt;br&gt;
 ผลงานที่เสร็จสมบูรณ์ใน Sprint&lt;br&gt;
 ต้อง ใช้งานได้จริง&lt;br&gt;
 ผ่าน Definition of Done&lt;br&gt;
🔹 3. Ceremonies (กิจกรรมหลัก)&lt;br&gt;
1️⃣ Sprint Planning&lt;/p&gt;

&lt;p&gt;📅 ต้น Sprint&lt;br&gt;
 เลือกงานจาก Product Backlog&lt;br&gt;
 วางแผนว่าจะทำอะไรบ้าง&lt;br&gt;
 กำหนดเป้าหมาย Sprint&lt;br&gt;
2️⃣ Daily Scrum (Daily Stand-up)&lt;br&gt;
📅 ทุกวัน (ไม่เกิน 15 นาที)&lt;br&gt;
ตอบ 3 คำถาม:&lt;br&gt;
 เมื่อวานทำอะไร&lt;br&gt;
 วันนี้จะทำอะไร&lt;br&gt;
 ติดปัญหาอะไรไหม&lt;br&gt;
3️⃣ Sprint Review&lt;br&gt;
📅 ท้าย Sprint&lt;br&gt;
 Demo งานให้ PO / Stakeholder ดู&lt;br&gt;
 รับ Feedback&lt;br&gt;
 ปรับ Product Backlog&lt;br&gt;
4️⃣ Sprint Retrospective&lt;br&gt;
📅 หลัง Review&lt;br&gt;
 อะไรทำได้ดี&lt;br&gt;
 อะไรควรปรับปรุง&lt;br&gt;
 จะพัฒนา Sprint หน้ายังไง&lt;br&gt;
&lt;strong&gt;6. การวางแผนการทํางานแบบ Agile&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcq4utqijbjjzucky3src.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcq4utqijbjjzucky3src.png" alt=" " width="800" height="448"&gt;&lt;/a&gt;&lt;br&gt;
1.PO คุยกับลูกค้า/user ได้โจทย์&lt;br&gt;
2.PO กลับมาคุยโจทย์กับ Team วางแผนว่าทำอะไรต่อ [ได้ Product backlog/Sprint backlog]&lt;br&gt;
3.เขียน Agile project charter ประกอบด้วย Vision/Mission/Success (ตัววัด)&lt;br&gt;
4.PO เขียน User story ตามมุมมองของ user&lt;br&gt;
5.เมื่อ PO เขียน User story เสร็จ ทำการเขียน board เรียก kanban board [todo/doing/done]&lt;br&gt;
6.ตอน Start sprint PO เป้นคนเลือก เอา user story ใน Product Backlog ไหนมาทำบ้างมาอยู่ในช่อง todo และเรียงลำดับความสำคัญก่อนหลัง&lt;br&gt;
7.PO ประกาศ Sprint goal สิ้นสุด sprint มีอะไรให้ทดสอบบ้าง&lt;br&gt;
8.Team เขียน task ย่อยแตกทางด้านขวาของ user story&lt;br&gt;
9.ใน user story มีตัวเลขกำกับ เรียก story point เกิดจากการ Estimate ตามหลักการ Planning poker&lt;br&gt;
10.ทำ Sprint burndown chart&lt;br&gt;
แกน X จำนวน Task&lt;br&gt;
แกน Y จำนวนวันทีต้องทำ&lt;br&gt;
เส้นน้ำเงินเป็น Benchmark&lt;br&gt;
จำนวนงานที่ทำปัจจุบันแทนด้วยเส้นสีแดง (actual)&lt;br&gt;
ถ้าสีแดงอยู่สูงกว่าเส้นสีน้ำเงินมากๆ % งานไม่เสร็จมีสูง Team จะต้องปรับเปลี่ยนแผนเพื่อให้ได้งานหลังจบ sprint&lt;br&gt;
11.ทำ Backlog Refinement เมื่อทำงานไปถึงครึ่ง sprint เพื่อดูว่าเป็นไปตามแผนหรือต้อง replan&lt;br&gt;
12.ทำ Daily standup ทุกวันไม่เกิน 15 นาที&lt;br&gt;
13.ทำ Sprint review (Product demo)&lt;br&gt;
14.ทำ Retrospective (less of/more of/keep doing/start doing/stop doing)&lt;/p&gt;

</description>
      <category>management</category>
      <category>productivity</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Mastering Fundamental Golang : Building RESTAPI Project</title>
      <dc:creator>เชาวรินทร์ ศักดิ์เศรษฐ</dc:creator>
      <pubDate>Thu, 15 Jan 2026 05:17:07 +0000</pubDate>
      <link>https://dev.to/__00/mastering-fundamental-golang-building-restapi-project-3hbn</link>
      <guid>https://dev.to/__00/mastering-fundamental-golang-building-restapi-project-3hbn</guid>
      <description>&lt;p&gt;1.การประกาศตัวแปร&lt;br&gt;
การประกาศตัวแปรใน Go ใช้คำว่า var ตามด้วยชื่อและประเภทของตัวแปร&lt;br&gt;
คำอธิบาย: ตัวแปรใน Go จะต้องมีประเภทที่ชัดเจน ซึ่งช่วยให้การจัดการข้อมูลมีประสิทธิภาพ&lt;br&gt;
ตัวอย่าง:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var x int = 10  // ตัวแปร x ประเภท int มีค่าเป็น 10
var name string = "Go"  // ตัวแปร name ประเภท string มีค่าเป็น "Go"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2.Formatting&lt;br&gt;
การจัดรูปแบบข้อมูลใน Go ใช้แพ็กเกจ fmt&lt;br&gt;
คำอธิบาย: ฟังก์ชันในแพ็กเกจ fmt ช่วยให้สามารถพิมพ์ข้อมูลในรูปแบบที่ต้องการได้&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import "fmt"
fmt.Printf("Hello, %s!", name)  // แสดงข้อความ "Hello, Go!"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3.Zero Value&lt;br&gt;
ค่าเริ่มต้นของตัวแปรที่ไม่ได้กำหนดค่า&lt;br&gt;
คำอธิบาย: Go จะให้ค่าที่เป็นค่าเริ่มต้นสำหรับประเภทต่าง ๆ เช่น 0 สำหรับ int และ "" สำหรับ string&lt;br&gt;
ตัวอย่าง:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var a int     // ค่าเริ่มต้นคือ 0
var b string  // ค่าเริ่มต้นคือ ""

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4.เงื่อนไข&lt;br&gt;
การใช้ if และ else เพื่อตรวจสอบเงื่อนไข&lt;br&gt;
คำอธิบาย: การควบคุมการทำงานของโปรแกรมตามเงื่อนไขที่กำหนด&lt;br&gt;
ตัวอย่าง:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if x &amp;gt; 5 {
    fmt.Println("x is greater than 5")  // ถ้า x มากกว่า 5 จะพิมพ์ข้อความนี้
} else {
    fmt.Println("x is less than or equal to 5")  // ถ้าไม่ใช่ จะพิมพ์ข้อความนี้
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5.Switch Case&lt;br&gt;
การใช้ switch เพื่อเปรียบเทียบหลายกรณี&lt;br&gt;
คำอธิบาย: ช่วยให้การตรวจสอบค่าหลาย ๆ ค่าทำได้ง่ายขึ้น&lt;br&gt;
ตัวอย่าง:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;switch day {
case "Monday":
    fmt.Println("Start of the week")
case "Friday":
    fmt.Println("End of the week")
default:
    fmt.Println("Midweek")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;6.Function&lt;br&gt;
การสร้างฟังก์ชันเพื่อทำงานเฉพาะ&lt;br&gt;
คำอธิบาย: ฟังก์ชันช่วยให้โค้ดมีการจัดระเบียบและนำกลับมาใช้ใหม่ได้&lt;br&gt;
ตัวอย่าง:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func add(a int, b int) int {
    return a + b  // คืนค่าผลรวมของ a และ b
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;7.Array&lt;br&gt;
การเก็บข้อมูลในลำดับที่มีขนาดคงที่&lt;br&gt;
คำอธิบาย: Array สามารถเก็บข้อมูลที่มีประเภทเดียวกันได้&lt;br&gt;
ตัวอย่าง:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var arr [5]int  // ประกาศ Array ที่สามารถเก็บค่า int ได้ 5 ตัว
arr[0] = 1      // กำหนดค่าให้กับตำแหน่งที่ 0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;8.Loop&lt;br&gt;
การทำซ้ำโดยใช้ for&lt;br&gt;
คำอธิบาย: ใช้สำหรับการทำงานซ้ำตามจำนวนรอบที่กำหนด&lt;br&gt;
ตัวอย่าง:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for i := 0; i &amp;lt; 5; i++ {
    fmt.Println(i)  // พิมพ์ค่า i ตั้งแต่ 0 ถึง 4
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;9.Slice&lt;br&gt;
การจัดการข้อมูลแบบลำดับที่มีขนาดยืดหยุ่น&lt;br&gt;
คำอธิบาย: Slice เป็นโครงสร้างข้อมูลที่สามารถขยายขนาดได้&lt;br&gt;
ตัวอย่าง:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;slice := []int{1, 2, 3}  // ประกาศ Slice ที่เก็บค่า int
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;10.Structure&lt;br&gt;
การสร้างข้อมูลที่มีหลายฟิลด์&lt;br&gt;
คำอธิบาย: Structure ช่วยในการจัดระเบียบข้อมูลที่เกี่ยวข้องกัน&lt;br&gt;
ตัวอย่าง:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;type Person struct {
    Name string
    Age  int
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;11.Method&lt;br&gt;
ฟังก์ชันที่ถูกแนบกับโครงสร้าง&lt;br&gt;
คำอธิบาย: Method ช่วยให้สามารถทำงานกับข้อมูลในโครงสร้างได้&lt;br&gt;
ตัวอย่าง:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func (p Person) Greet() {
    fmt.Println("Hello, my name is", p.Name)  // แสดงข้อความทักทาย
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;12.Pointer&lt;br&gt;
การเก็บที่อยู่ของตัวแปร&lt;br&gt;
คำอธิบาย: Pointer ช่วยในการจัดการหน่วยความจำและส่งข้อมูลโดยไม่ต้องคัดลอก&lt;br&gt;
ตัวอย่าง:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var ptr *int
ptr = &amp;amp;x  // ptr เก็บที่อยู่ของ x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;13.Interface&lt;br&gt;
การกำหนดพฤติกรรม&lt;br&gt;
คำอธิบาย: Interface ช่วยในการกำหนดว่าฟังก์ชันใดที่ต้องมีในโครงสร้างต่าง ๆ&lt;br&gt;
ตัวอย่าง:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;type Shape interface {
    Area() float64  // กำหนดฟังก์ชัน Area ที่ต้องมีในโครงสร้างที่ใช้ Interface นี้
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;14.การจัดการ JSON&lt;br&gt;
ใช้ encoding/json package สำหรับการแปลงข้อมูลเป็น JSON&lt;br&gt;
คำอธิบาย: JSON เป็นรูปแบบข้อมูลที่ใช้ในการส่งข้อมูลระหว่างโปรแกรม&lt;br&gt;
ตัวอย่าง:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;jsonData, _ := json.Marshal(person)  // แปลงโครงสร้าง person เป็น JSON
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;15.การสร้าง REST API ใน Go&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ติดตั้ง Go
ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Go บนเครื่องของคุณแล้ว สามารถดาวน์โหลดได้จาก golang.org&lt;/li&gt;
&lt;li&gt;สร้างโปรเจกต์ใหม่
สร้างโฟลเดอร์ใหม่สำหรับโปรเจกต์ของคุณ:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bash
mkdir go-rest-api
cd go-rest-api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;สร้างไฟล์หลัก
สร้างไฟล์ main.go และเปิดไฟล์นั้นในโปรแกรมแก้ไขที่คุณชื่นชอบ&lt;/li&gt;
&lt;li&gt;เขียนโค้ด REST API
เพิ่มโค้ดดังต่อไปนี้ใน main.go:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package main

import (
    "encoding/json"
    "fmt"
    "net/http"
)

// Struct สำหรับจัดการข้อมูล
type Person struct {
    ID   int    `json:"id"`
    Name string `json:"name"`
}

// สร้างข้อมูลตัวอย่าง
var people = []Person{
    {ID: 1, Name: "John Doe"},
    {ID: 2, Name: "Jane Doe"},
}

// ฟังก์ชันสำหรับการจัดการคำขอ GET
func getPeople(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    json.NewEncoder(w).Encode(people)
}

// ฟังก์ชันหลัก
func main() {
    http.HandleFunc("/people", getPeople) // กำหนดเส้นทางสำหรับคำขอที่ /people

    fmt.Println("Server is running on port 8080...")
    http.ListenAndServe(":8080", nil) // เริ่มเซิร์ฟเวอร์
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;อธิบายโค้ด
Struct Person: ใช้เพื่อเก็บข้อมูลของบุคคล มีฟิลด์ ID และ Name
Slice people: เก็บข้อมูลตัวอย่างของบุคคล
getPeople function: ฟังก์ชันนี้จัดการคำขอ GET ที่เส้นทาง /people โดยจะส่งข้อมูลบุคคลในรูปแบบ JSON
main function: ตั้งค่าเซิร์ฟเวอร์ให้ฟังที่พอร์ต 8080 และกำหนดเส้นทางสำหรับคำขอ&lt;/li&gt;
&lt;li&gt;ทดสอบ REST API
รันโปรแกรม:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bash
go run main.go
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;เปิดเว็บเบราว์เซอร์หรือใช้เครื่องมือเช่น Postman หรือ cURL เพื่อทดสอบ API:&lt;br&gt;
GET &lt;a href="http://localhost:8080/people" rel="noopener noreferrer"&gt;http://localhost:8080/people&lt;/a&gt;&lt;br&gt;
คุณควรจะเห็นผลลัพธ์ในรูปแบบ JSON:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[
    {"id":1,"name":"John Doe"},
    {"id":2,"name":"Jane Doe"}
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;ขยาย API
คุณสามารถเพิ่มฟังก์ชันการทำงานเพิ่มเติม เช่น:
POST เพื่อเพิ่มบุคคลใหม่
PUT เพื่อแก้ไขข้อมูลบุคคล
DELETE เพื่อลบบุคคล
ตัวอย่างการเพิ่มฟังก์ชันการทำงาน
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// ฟังก์ชันสำหรับจัดการคำขอ POST
func addPerson(w http.ResponseWriter, r *http.Request) {
    var newPerson Person
    json.NewDecoder(r.Body).Decode(&amp;amp;newPerson)
    people = append(people, newPerson)
    w.WriteHeader(http.StatusCreated)
    json.NewEncoder(w).Encode(newPerson)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;// ในฟังก์ชัน main ให้เพิ่มเส้นทางใหม่&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http.HandleFunc("/people", getPeople) // GET
http.HandleFunc("/people/add", addPerson) // POST
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>api</category>
      <category>beginners</category>
      <category>go</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
