Day05-Go 語法I - iT 邦幫忙
文章推薦指數: 80 %
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}}
關閉
延伸文章資訊
- 1Go 语言之旅
欢迎来到Go 编程语言指南。 点击页面左上角的Go 指南可以访问本指南的模块列表。 ... 本指南由一系列幻灯片贯穿始终,其中有一些练习需要你来完成。
- 2使用Go 邁出您的第一步- Learn
想要學習程式設計語言但不確定要如何開始嗎? 從這裡開始! 了解使用Go 建置簡單程式所需的基本語法與想法。
- 3完全自學! Go語言Golang實戰聖經| 誠品線上
Go語言Golang實戰聖經:,內容介紹:你從未見過如此完整的Go語言中文教材! ... 本書以豐富的範例及練習,帶領讀者實地操作Go 語言的基礎及相關特色,讀完就能立馬投入 ...
- 4Day05-Go 語法I - iT 邦幫忙
Go Phishing!30 天用Go 實作Reverse Proxy 之釣魚大作戰系列第5 篇 ... 終於要開始講語法囉~Go Playground 是一個練習Go 的好地方,以下的範例都會...
- 5Go練習Go練習100例 - 程式前沿
2018.06.13; Go練習Go練習100例,. GoLang練習例項100之001—-切片轉換為Map. package main import "fmt" //切片轉換為Map func...