iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 18
1
自我挑戰組

Go劍復國-30天導入Golang系列 第 18

Golang 常用函式庫-3

  • 分享至 

  • xImage
  •  

進入到常用函式庫第三天,也是最後一天介紹一些 stdlib 的應用,後續章節還會有一些第三方 lib 的介紹

encoding/json

我想在這個萬物皆是 web 的時代,json 是一個不可或缺的格式,那就來來看看,怎麼使用 json

package main

import (
	"encoding/json"
	"fmt"
)

type UserInfo struct {
	Name string `json:"name"`
	Age  int    `json:"age"`
}

func main() {
	var jsonString string
	jsonString = `{"name":"syhlion","age":5}`

	//把 json unmarshal 進去 struct
	u := &UserInfo{}
	err := json.Unmarshal([]byte(jsonString), u)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Printf("name:%s, age:%d\n", u.Name, u.Age)

	//把 struct 轉成 json 字串
	b, err := json.Marshal(u)
	if err != nil {
		fmt.Println(err)
		return
	}
	fmt.Println(string(b))

}

https://play.golang.org/p/F_Rx5uETe2c

這邊有用到一個 golang 很特殊的小功能叫做 struct tags,就是在上面範例中 UserInfo 每個 field 後面的 json tag,需要更多的說明可以參閱官網

regexp

正則表達式,也是各種應用中不可或缺的一個基礎功能。

package main

import (
	"fmt"
	"regexp"
)

func main() {
	re := regexp.MustCompile(`^([0-9]{3})(.*)`)
	m := re.MatchString("2345Abc")
	fmt.Println("234Abc is match patter ? ", m)

	ss := re.FindStringSubmatch("2345Abc")
	fmt.Println("sub match array ", ss)
}

https://play.golang.org/p/AE4ig9mJv5n

在這邊要注意一下,golang 的正則表達式是基於 google 開發的 re2 來實現的,因為這是為了解決目前現有的正則式演算法,時間複雜並無固定的保證,所開發出來的。所以一些常見的遞迴搜尋在 re2 上面是不能使用的。


上一篇
Golang 常用函式庫-2
下一篇
Golang 寫一個簡易的 http server
系列文
Go劍復國-30天導入Golang30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言