Day05-Go 語法I - iT 邦幫忙

文章推薦指數: 80 %
投票人數:10人

Go Phishing!30 天用Go 實作Reverse Proxy 之釣魚大作戰系列第5 篇 ... 終於要開始講語法囉~Go Playground 是一個練習Go 的好地方,以下的範例都會放在Go Playground ... 2019iT邦幫忙鐵人賽 DAY 5 1 SoftwareDevelopment GoPhishing!30天用Go實作ReverseProxy之釣魚大作戰系列第 5篇 Day05-Go語法I 2019鐵人賽 golang 盧承億 2018-10-2013:49:062881瀏覽 終於要開始講語法囉~GoPlayground是一個練習Go的好地方,以下的範例都會放在GoPlayground上,可以直接上去跑,或是你想用直接用昨天安裝好的開發環境跑也可以~ 小提醒:因為系列文是設計給沒學過Go也可以看的,有經驗的Godeveloper建議從Day8開始,可以直接開始實作~ HelloWorld 學任何語言都是從HelloWorld開始,Go也不例外,在Go中每個程式可以由多個package組成,程式會從mainpackage中的funcmain()開始執行,寫過C++/Java的朋友們應該會覺得很熟悉。

fmt是內建用來做標準輸入輸出的package,就像其他語言內建的library一樣,直接import就可以用了 Run packagemain import"fmt" funcmain(){ fmt.Println("HelloWorld") //HelloWorld } 變數 宣告變數有兩種方式,分別是用var指定型別(varaint),或是讓編譯器自動推斷(b:=10),也可以一次宣告多個變數。

如果沒有指定初始值那就會設為0,不像C沒初始化會跑出奇怪的值,果然是21世紀的C語言呢 Go支援的型別有常見的int、string、bool、rune(字元)、byte、float等等,想知道所有型別可以參考AtourofGo Run funcmain(){ varaint a=10 b:=10 c,d:=1.5,2.5 vareint fmt.Println("a+b=",a+b)//a+b=20 fmt.Println("c+d=",c+d)//c+d=4 fmt.Println("e=",e)//e=0 } Function Go的function跟其他語言大同小異,比較不同的是他可以有多個回傳值,也可以被當成變數傳來傳去(這點跟JavaScript一樣)。

在Go如果要組合字串的話通常會用Printf,這邊的%d是整數的意思,如果對這種語法不太熟可以參考fmtPrinting Run funcadd(aint,bint)int{//接受兩個int作為參數,回傳值也是int returna+b } funcswap(a,bint)(int,int){//接受兩個int作為參數,回傳值也是兩個int returnb,a } funcmain(){ a,b:=5,10 fmt.Println("a+b=",add(a,b))//a+b=15 fmt.Printf("a=%d,b=%d\n",a,b)//a=5,b=10 swapFn:=swap a,b=swapFn(a,b) fmt.Printf("a=%d,b=%d\n",a,b)//a=10,b=5 } 條件判斷 Go的if也跟其他語言一樣,比較特別的是他可以在判斷前寫一段小敘述 Run import"math/rand" funcrandInt()int{ returnrand.Intn(100)//隨機取得0~100的int } funcmain(){ a:=randInt() ifa%2==1{ fmt.Println("a是奇數") } ifb:=randInt();b%2==1{ fmt.Println("b是奇數") } } 迴圈 在Go中沒有while,因為for可以拿來當while用 Run funcmain(){ sum:=0 fori:=0;i<10;i++{ sum+=i } fmt.Println(sum)//45 sum2,i:=0,0 fori<10{//當成while用 sum2+=i i++ } fmt.Println(sum)//45 } 小練習 試試看到GoPlayground上實作一個funcpow(x,nint)int計算x的n次方: 題目 funcpow(x,nint)int{ //Implementthisfunction } funcmain(){ result:=pow(2,10) fmt.Println(result)//2^10=1024 } 解答 小結 今天講了變數、function、if/else跟迴圈,大家都看懂了嗎?有問題的話歡迎在下方留言,沒問題的話明天就要進入更難的slice、map跟struct 參考資料 因為這個系列文的重點在實作,所以語法部分會講得比較快一點,如果覺得步調太快了也可以交叉看看另外兩位邦友的Go教學,他們花比較多篇幅在語法的部份: 學習Go 啥物碗Golang?30天就Go 留言 追蹤 檢舉 上一篇 Day04-架設開發環境 下一篇 Day06-Go語法II 系列文 GoPhishing!30天用Go實作ReverseProxy之釣魚大作戰 共30篇 目錄 RSS系列文 訂閱系列文 65人訂閱 26 Day26-部署II 27 Day27-說好的HTTPS呢 28 Day28-如何防範(開發者篇) 29 Day29-如何防範(使用者篇) 30 Day30-結語 完整目錄 尚未有邦友留言 立即登入留言 iT邦幫忙鐵人賽 參賽組數 1087組 團體組數 52組 累計文章數 20470篇 完賽人數 572人 鐵人賽最新文章 gotodie?那個goto到底能不能用啊? 2021/12/12更新 予焦啦!一夢終須醒...... 盤點清查與檢測掃描-資通安全健診 [13th][Day23]httpresponseheader(下) [13th][Day22]httpresponseheader(上) [13th][Day21]golangcontext 股票怎麼選?掌握這原則,你也能找到強勢股 Gitpush 盤點清查與檢測掃描-安全性檢測 前往鐵人賽 技術推廣專區 [Day2]抓取每日收盤價 [Day1]基本工具安裝 利用python取得永豐銀行API的Nonce [Day03]tinyML開發板介紹 永豐金融API測試員 [Day01]在享受tinyML這道美食之前 [Day3]使用ta-lib製作指標 [Day4]函數打包與買進持有報酬率試算 計算API所需要的參數:HashID 計算API所需要的參數:IV 前往鐵人賽 熱門問題 公司想要客製化一套ERP系統該選擇軟體開發?套裝系統?還是自行設立部門? 軟體工程師會被監控嗎 我有一個客戶中了mljx病毒勒索950美金我免費轉讓有人要接嗎? 訂房網站DB架構 (以解決)請問GMAIL群組.假如公司之前有業務群[email protected].有新職員收不到這個.如何把新業務加入 加班提醒視窗 想找PDF編輯工具,Adobe太貴了,請問還有其他推薦的替代方案嗎? 家中的網路配置 切割vlan網段方式 【已解決】如何安裝舊版本的VS2019 IT邦幫忙 站方公告 【2021iThome鐵人賽】登登登!究竟獎落誰家,2021iThome鐵人賽得獎名單正式揭曉 熱門tag 看更多 13th鐵人賽 12th鐵人賽 11th鐵人賽 鐵人賽 2019鐵人賽 2018鐵人賽 javascript 2017鐵人賽 windows php python windowsserver linux c# 程式設計 資訊安全 css vue.js sql 分享 熱門回答 公司想要客製化一套ERP系統該選擇軟體開發?套裝系統?還是自行設立部門? 軟體工程師會被監控嗎 想找PDF編輯工具,Adobe太貴了,請問還有其他推薦的替代方案嗎? 防火牆如何設定DenyPolicy,以提高資安機制? 家中的網路配置 (以解決)請問GMAIL群組.假如公司之前有業務群[email protected].有新職員收不到這個.如何把新業務加入 RedhatEnterpriselinux5.5安裝Oracle問題 MYSQL如何將欄位中的json陣列資料拆分出來 請問目前php8版本的問題 切割vlan網段方式 熱門文章 予焦啦!一夢終須醒...... gotodie?那個goto到底能不能用啊? 盤點清查與檢測掃描-資通安全健診 再增加五隻狗勾 自己在家接收來自飛機的ADS-B訊號! 2021/12/12更新 第七隻狗勾 第九隻狗勾 第六隻狗勾 第八隻狗勾 一週點數排行 更多點數排行 海綿寶寶(antijava) ㊣浩瀚星空㊣(yoching) 居然解出來了(partyyaya) raytracy(raytracy) ccenjor(ccenjor) mathewkl(mathewkl) japhenchen(japhenchen) 純真的人(jer5173) 小山丘(a243318490) fillano(fillano) × At 輸入對方的帳號或暱稱 Loading 找不到結果。

標記 {{result.label}} {{result.account}} 關閉



請為這篇文章評分?