<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"><channel><title>MagicLen</title><link>https://magiclen.org/category/golang/feed</link><description>多元化原創文章，內容包羅萬象，有程式語言、網站應用、軟體介紹、硬體介紹、作業系統、旅行遊記、專題採訪、益智問題、文學創作，以及作者們的知識分享和作品分享。</description><language>zh-TW</language><lastBuildDate>Mon, 13 Apr 2026 05:03:25 +0000</lastBuildDate><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>8</sy:updateFrequency><sy:updateBase>1970-01-01T00:00+00:00</sy:updateBase><item><title>如何寫程式判斷閏年並計算一個月有幾天？</title><link>https://magiclen.org/year-helper</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2023/01/calendar-660670_1920-220x162.jpg" srcset="https://magiclen.org/wp-content/uploads/2023/01/calendar-660670_1920-220x162.jpg 1x, https://magiclen.org/wp-content/uploads/2023/01/calendar-660670_1920-440x324.jpg 2x, https://magiclen.org/wp-content/uploads/2023/01/calendar-660670_1920-660x486.jpg 3x" alt="">
我們在小學階段都會學到平年(common year)和閏年(leap year)的判斷方式，以及這兩種年份是差在前者的二月有28天，後者則是有29天。所以平年整年一共有365天；閏年整年一共有366年。這是身為一個地球人的基本常識，但在小學的時候，老師可能只會告訴我們把西元年份的數字除以4，如果可以整除，那麼這年就是閏年，否則是平年。老師說的也不能說是錯的，只是不太完整，實際上，閏年的正確判斷方式...]]></description><category>Java</category><category>Rust</category><category>Go</category><category>JavaScript</category><category>JavaScript</category><category>Rust</category><category>TypeScript</category><category>year-helper</category><guid>https://magiclen.org/year-helper</guid><pubDate>Tue, 3 Jan 2023 12:00:00 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>寫程式算階乘，關於階乘的三兩事</title><link>https://magiclen.org/factorial</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2022/08/factorial-220x162.png" srcset="https://magiclen.org/wp-content/uploads/2022/08/factorial-220x162.png 1x, https://magiclen.org/wp-content/uploads/2022/08/factorial-440x324.png 2x, https://magiclen.org/wp-content/uploads/2022/08/factorial-660x486.png 3x" alt="">
正整數的階乘(Factorial)是小於或等於該數的所有正整數的乘積，若正整數為N，用N!來表示N的階乘。至於0!是階乘的特例，它被定義為1。階乘的運算具有遞迴(recursion)概念，常作為學習程式邏輯的材料，而這篇文章將會說明階乘相關的程式計算。]]></description><category>研究分享</category><category>Java</category><category>Rust</category><category>數學邏輯</category><category>Go</category><category>JavaScript</category><category>Java</category><category>JavaScript</category><category>Rust</category><category>TypeScript</category><category>階乘</category><category>Go</category><guid>https://magiclen.org/factorial</guid><pubDate>Thu, 27 Oct 2022 12:00:00 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>用動態規劃解決問題：零壹背包問題(0/1 Knapsack Problem)</title><link>https://magiclen.org/dynamic-programming-0-1-knapsack-problem</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2020/04/technology-1283624_1920-220x162.jpg" srcset="https://magiclen.org/wp-content/uploads/2020/04/technology-1283624_1920-220x162.jpg 1x, https://magiclen.org/wp-content/uploads/2020/04/technology-1283624_1920-440x324.jpg 2x, https://magiclen.org/wp-content/uploads/2020/04/technology-1283624_1920-660x486.jpg 3x" alt="">
一個背著背包的小偷闖空門偷東西，他必須趁屋主回來之前把有價值的物品塞進包包內帶走。考慮到小偷自身的行動力，背包能裝的物品總重量有限，小偷要如何選擇物品才能獲得最高的總價值？]]></description><category>研究分享</category><category>Java</category><category>Rust</category><category>演算法</category><category>Go</category><category>JavaScript</category><category>Java</category><category>JavaScript</category><category>Rust</category><category>TypeScript</category><category>動態規劃</category><category>Go</category><guid>https://magiclen.org/dynamic-programming-0-1-knapsack-problem</guid><pubDate>Tue, 4 Aug 2020 12:00:41 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>用動態規劃解決問題：找零錢問題(Coin Change Problem)</title><link>https://magiclen.org/dynamic-programming-coin-change</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2020/04/technology-1283624_1920-220x162.jpg" srcset="https://magiclen.org/wp-content/uploads/2020/04/technology-1283624_1920-220x162.jpg 1x, https://magiclen.org/wp-content/uploads/2020/04/technology-1283624_1920-440x324.jpg 2x, https://magiclen.org/wp-content/uploads/2020/04/technology-1283624_1920-660x486.jpg 3x" alt="">
許多人認為身上如果帶太多的零錢會讓行動變得不方便，因此會希望商店店員在找零錢的時候能夠以最少的硬幣數來找，而不是全部都用1元塞給我們。]]></description><category>研究分享</category><category>Java</category><category>Rust</category><category>演算法</category><category>Go</category><category>JavaScript</category><category>Java</category><category>JavaScript</category><category>Rust</category><category>TypeScript</category><category>動態規劃</category><category>Go</category><guid>https://magiclen.org/dynamic-programming-coin-change</guid><pubDate>Tue, 28 Jul 2020 12:00:30 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>用動態規劃解決問題：基本觀念(有重疊子問題的問題)</title><link>https://magiclen.org/dynamic-programming-basic</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2020/04/technology-1283624_1920-220x162.jpg" srcset="https://magiclen.org/wp-content/uploads/2020/04/technology-1283624_1920-220x162.jpg 1x, https://magiclen.org/wp-content/uploads/2020/04/technology-1283624_1920-440x324.jpg 2x, https://magiclen.org/wp-content/uploads/2020/04/technology-1283624_1920-660x486.jpg 3x" alt="">
動態規劃(Dynamic Programming，簡稱DP)是一種解決問題的技巧，主要被用來優化那些「記不住自己過去曾解出來的答案所以只好重複再解」的演算法，讓它們可以「記憶」已經找出來的答案，從而不斷利用，以大大降低時間複雜度(從指數級降到線性)。]]></description><category>研究分享</category><category>Java</category><category>Rust</category><category>演算法</category><category>Go</category><category>JavaScript</category><category>Java</category><category>JavaScript</category><category>Rust</category><category>TypeScript</category><category>費氏數列</category><category>動態規劃</category><category>Go</category><guid>https://magiclen.org/dynamic-programming-basic</guid><pubDate>Tue, 21 Jul 2020 12:00:16 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>認識數字系統，進行任意進制的超長整數運算(加、減、乘、除)</title><link>https://magiclen.org/numeral-system-big-integer</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2020/05/big-number-220x162.jpg" srcset="https://magiclen.org/wp-content/uploads/2020/05/big-number-220x162.jpg 1x, https://magiclen.org/wp-content/uploads/2020/05/big-number-440x324.jpg 2x, https://magiclen.org/wp-content/uploads/2020/05/big-number-660x486.jpg 3x" alt="">
電腦程式在進行整數數值計算的時候，會受到變數型別的記憶體空間使用大小而有數值表示範圍的限制，所以當遇到過長的數值時，就無法正常地運算出結果。]]></description><category>研究分享</category><category>Java</category><category>Rust</category><category>數學邏輯</category><category>Go</category><category>JavaScript</category><category>Java</category><category>JavaScript</category><category>Rust</category><category>大數運算</category><category>TypeScript</category><category>Go</category><guid>https://magiclen.org/numeral-system-big-integer</guid><pubDate>Tue, 14 Jul 2020 12:00:42 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>如何用程式進行質因數分解和尋找最大公因數與最小公倍數？</title><link>https://magiclen.org/prime-factorization-gcd-lcm</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2018/10/pay-819587_1920-220x162.jpg" srcset="https://magiclen.org/wp-content/uploads/2018/10/pay-819587_1920-220x162.jpg 1x, https://magiclen.org/wp-content/uploads/2018/10/pay-819587_1920-440x324.jpg 2x, https://magiclen.org/wp-content/uploads/2018/10/pay-819587_1920-660x486.jpg 3x" alt="">
若正整數a除以正整數b可以整除，則稱b為a的因數(Factor)，a為b的倍數(Multiple)，1是所有正整數最小的因數，任意正整數最大的因數就是該正整數本身。若a同時是x和y的因數，則稱a是x和y的公因數(Common Divisor)，如果a是x和y的公因數中最大的一個，則稱a是x和y的最大公因數(Greatest Common Divisor，簡稱GCD)。若a同時是x和y的倍數，則稱a...]]></description><category>研究分享</category><category>Java</category><category>Rust</category><category>數學邏輯</category><category>演算法</category><category>Go</category><category>JavaScript</category><category>Java</category><category>JavaScript</category><category>Rust</category><category>TypeScript</category><category>質因數分解</category><category>最大公因數</category><category>最小公倍數</category><category>輾轉相除法</category><category>Go</category><guid>https://magiclen.org/prime-factorization-gcd-lcm</guid><pubDate>Thu, 9 Jul 2020 12:00:35 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>如何寫程式來找出河內塔的最佳解？那不寫程式的話呢？</title><link>https://magiclen.org/tower-of-hanoi</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2020/04/Untitled-220x162.jpg" srcset="https://magiclen.org/wp-content/uploads/2020/04/Untitled-220x162.jpg 1x, https://magiclen.org/wp-content/uploads/2020/04/Untitled-440x324.jpg 2x, https://magiclen.org/wp-content/uploads/2020/04/Untitled-660x486.jpg 3x" alt="">
河內塔(Tower of Hanoi)是一個很謎的數學遊戲，它是由三根桿子(Rod)和一個以上大小不同的碟片(Disk)所組成的。在遊戲的一開始，這些碟片按照底大頂小的順序疊在一起，由三根桿子中的其中一根串著。玩家每次可以移動一個碟片到其它的桿子上，但是不能將比較大的碟片疊在比較小的碟片上。當玩家把所有碟片都串到指定的桿子，遊戲就結束了。]]></description><category>研究分享</category><category>Java</category><category>Rust</category><category>數學邏輯</category><category>Go</category><category>JavaScript</category><category>Java</category><category>JavaScript</category><category>Rust</category><category>TypeScript</category><category>河內塔</category><category>Go</category><guid>https://magiclen.org/tower-of-hanoi</guid><pubDate>Thu, 25 Jun 2020 20:00:28 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>電腦是怎麼進行四則運算的？前序式、中序式、後序式又是什麼？</title><link>https://magiclen.org/arithmetic</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2020/04/addition-black-and-white-black-and-white-chalk-374918-220x162.jpg" srcset="https://magiclen.org/wp-content/uploads/2020/04/addition-black-and-white-black-and-white-chalk-374918-220x162.jpg 1x, https://magiclen.org/wp-content/uploads/2020/04/addition-black-and-white-black-and-white-chalk-374918-440x324.jpg 2x, https://magiclen.org/wp-content/uploads/2020/04/addition-black-and-white-black-and-white-chalk-374918-660x486.jpg 3x" alt="">
我們從小學習算術的時候便知道「四則(加、減、乘、除)運算」的規則，也就是「先乘除、後加減，以及括號先算」。那麼如果我們要撰寫一個可以支援算式輸入且能夠按照四則運算規則求出結果的程式，該怎麼做呢？]]></description><category>研究分享</category><category>Java</category><category>Rust</category><category>演算法</category><category>Go</category><category>JavaScript</category><category>Java</category><category>JavaScript</category><category>Rust</category><category>TypeScript</category><category>四則運算</category><category>後序式</category><category>深度優先搜尋</category><category>Go</category><guid>https://magiclen.org/arithmetic</guid><pubDate>Thu, 18 Jun 2020 12:00:21 +0800</pubDate><dc:creator>Magic Len</dc:creator></item><item><title>如何將遞迴函數改成迭代函數？</title><link>https://magiclen.org/recursive-to-iterative</link><description><![CDATA[    <img src="https://magiclen.org/wp-content/uploads/2020/04/mathematics-1509559_1920-220x162.jpg" srcset="https://magiclen.org/wp-content/uploads/2020/04/mathematics-1509559_1920-220x162.jpg 1x, https://magiclen.org/wp-content/uploads/2020/04/mathematics-1509559_1920-440x324.jpg 2x, https://magiclen.org/wp-content/uploads/2020/04/mathematics-1509559_1920-660x486.jpg 3x" alt="">
遞迴(Recursive)函數是在執行的過程又會直接或間接地呼叫自己本身的函數。通常透過遞迴函數可以快速地驗證我們的演算法，用簡短的程式碼處理複雜的問題，但是函數在呼叫時需要建立新的堆疊框(Stack Frame)，除了會需要額外的開支(Overhead)之外，如果在函數中呼叫函數，而這函數又會呼叫函數，持續下去，很容易就會造成堆疊溢出(Stack Overflow)。雖然有些程式語言的編譯器會做...]]></description><category>研究分享</category><category>Java</category><category>Rust</category><category>Go</category><category>JavaScript</category><category>Java</category><category>JavaScript</category><category>Rust</category><category>二元搜尋</category><category>TypeScript</category><category>費氏數列</category><category>階乘</category><category>Go</category><guid>https://magiclen.org/recursive-to-iterative</guid><pubDate>Thu, 11 Jun 2020 12:00:44 +0800</pubDate><dc:creator>Magic Len</dc:creator></item></channel></rss>