iT邦幫忙

2021 iThome 鐵人賽

DAY 1
1
Software Development

網頁新手入門,手把手用React/Golang(Echo)開發基礎網頁(以簡易智慧家庭為例)系列 第 4

Golang快速入門(Day4)

在這邊要介紹一下go的基本用法
而這些用法在A Tour of Go也都有介紹

在下面的程式碼如果有想測試的,也都可以貼到Go Playground來進行測試喔

但就讓我在這邊也再次描述一遍吧

程式進入點

在go的程式中,當你執行一個go的檔案,他會第一個跑的程式就是main
範例如下

package main

import "fmt"

func main() {
    fmt.Println("Hello Main!")
}

func first() {
    fmt.Println("Hello First")
}

https://play.golang.org/p/PwgrD2jABVf
他會印出 Hello Main

Import

當你使用程式時,會需要依賴第三方的套件,就會需要使用import來讓程式知道你希望call的function要從哪裡來

而這些套件有什麼function可以讓你使用,可以到
https://pkg.go.dev/std
來查詢你想要的功能
在這邊以fmt為舉例
https://pkg.go.dev/fmt#pkg-index

這邊就有列出他可以使用的function
而我們剛剛在上述程式中使用的Println就是其中一個function

變數宣告

在go裡面,如果要宣告變數,有幾種方法

var x string
x = "Hello World!"
var y string = "Hello World!"
z := "Hello World!"

上述這三種宣告方法出來的內容皆會是一樣的
:= 是go的一個特別宣告的方式,就是可以自動將左邊的內容變成右邊的型態的變數,在這個方式下有幾個特別要注意的點

  • := 可以使用多的變數(這個可以配合下方的function混合著看)
package main

import "fmt"

func swap(x string, y string) (string, string) {
	return y, x
}

func main() {
	a, b := swap("hello", "world")
	fmt.Println(a, b)
}
  • := 的左邊至少要有一個新變數
package main

import "fmt"

func swap(x string, y string) (string, string) {
	return y, x
}

func main() {
	a, b := swap("hello", "world")
	fmt.Println(a, b)
    b, c := swap("foo", "bar")
    fmt.Println(b, c)
    b, c := swap("golang", "javascript") // Error!!
}

在golang裡面,他會預設檢查你是否有使用到所有的變數,如果沒使用到,他會跳出警告跟你說你沒用到這個變數,並不讓你編譯程式,但如果還是想要保留這個變數,就可以使用"_"來告訴編譯器說你有用到這個變數
失敗版

test := "Hello World!" // test declared but not used

成功版

test := "Hello World!" 
_ = test

邏輯判斷式(if/else if)

在golang裡面的if寫法跟其他的語言比較不一樣,不需要將條件做括號

a := 1
b := 2
if a > b {
    fmt.Println("a is greater than b")
} else {
    fmt.Println("a is smaller than b")
}

另外,在golang裡的if還有個特別的用法,就是可以在if前再放一段code,他的作用域就僅在if內,出去就取不到你裡面的內容了

if name := "john"; name != "" {
    fmt.Println("name:", name) // name: john
}
fmt.Println("name:", name) // !!ERROR

上一篇
環境配置(node/golang)(Day3)
下一篇
Golang快速入門-2(Day5)
系列文
網頁新手入門,手把手用React/Golang(Echo)開發基礎網頁(以簡易智慧家庭為例)28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言