Skip to content

Yu-Zhuang/Golang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Golang

my Golang practice and note

Content

  1. Small Project

    1. Today Shohei Ohtani (PTT crawler)
    2. 爬點PTT (PTT crawler)
    3. GoKeep (記帳PWA-Web app)
  2. Web Development

    1. 前端傳檔案到後端儲存並瀏覽
    2. 登入系統用JWT和Cookie保持登入狀態
    3. 透過todo webApp練習JWT登入驗證保持登入&由資料庫提取對應用戶資料
    4. Golang call API
  3. Skill

    1. unit testing
    2. gorutine, channel
  4. Data Structure

    1. linked list(simple)
    2. Stack
  5. Boring pratice

    1. Basic skill var, operation, function
    2. Some data type
    3. rateLimitMiddleware: use cookie
    4. Guess number game

Supplement

  1. LeetCode in Golang
  2. Web Skill implement in Golang

Golang note

package main import "fmt" // struct type animal struct { dna string age int } type dog struct { animal // 內嵌 animal hiar string } type cat struct { animal animal // 結構再包結構animal behave string } // method :定義屬於type的func func (d *dog) growth(year int) { d.age += year } type myInt int // 不是結構也可以 func (i *myInt) add(num myInt) { *i += num } func main() { // struct 範例 myDog := dog{ animal: animal{"dogDna", 2}, hiar: "dog hair",	} fmt.Println(myDog, myDog.age, myDog.animal) myCat := cat{ animal: animal{"catDna", 1}, behave: "mew~",	} fmt.Println(myCat, myCat.animal.age, myCat.animal) // func :在go種function也是一種型別可以assign給變數 func1 := func(msg string) { fmt.Println("func1", msg) } func1("hi go func") // array :陣列, 大小固定 strs := [2]string{"hello", "world"} ns := [...]int{1, 2, 3, 5, 6, 8, 9, 10} fmt.Println(strs, ns, len(ns)) for i, j := range strs { fmt.Println(i, j)	} // slice :可動態改變大小, slice傳至function本身是by refer s1 := ns[2:5] // 從別人那邊切來 fmt.Println(s1, len(s1), cap(s1)) s2 := []string{"hello", "world"} // 直接宣告 fmt.Println(s2, len(s2), cap(s2)) s2 = append(s2, "new", "slice") fmt.Println(s2, len(s2), cap(s2)) // interface{} :空介面可以assign不同的資料型態 var x interface{} nums := []int{1, 2, 3} x = nums fmt.Println(x) // map :可以定義key-value m1 := map[string]int{ "str1": 1, "str2": 3,	} fmt.Println(m1) age, ok := m1["age"] // 檢查map的key是否存在 if ok == true { fmt.Println(age)	} else { fmt.Println(`not found "age"`)	} m1["newk"] = 7 // 新增key-value fmt.Println(m1) delete(m1, "str2") // 刪除特定key fmt.Println(m1) fmt.Println() // 基本型態與定義 //basicType() } func basicType() { // 基本型別: int, float, boolean, string; 也可用const宣告常數 var num int var fnum float32 var flag bool var str string fmt.Println(num, fnum, flag, str) // 指標: 宣告 *type ; 取值 *var ; 取址 &var var pt1 *int pt1 = &num *pt1 = 5 fmt.Println(pt1, *pt1, &num, num) // 別名: 為型態取別名, 內建的別名有: type byte = uint8 ; type rune = int32 type myInt = int var mynum myInt mynum = 7 fmt.Printf("%d %T\n", mynum, mynum) // %T格式化輸出: 查看型態 // 新型別: 自定義新型別 type myFloat float32 var myflt myFloat myflt = 7.2 fmt.Printf("%f %T\n", myflt, myflt) }

~ Practice make perfect ~

About

my Golang practice and note

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published