當程式寫到一定程度的時後,有時就會寫出重複性很高的 Code
這時候就是一個可以好好利用泛型來優化的時候了~
今天就來介紹 Go 要如何寫泛型吧~
func function_名稱[泛型變數名稱 泛型約束](傳入參數名稱 型別) 回傳值
func PrintType[T any]()
func Compare[T comparable](lhs T, rhs T) T
type struct_名稱[泛型變數名稱 泛型約束] struct {}
type GeneralResponse[T any] struct {
Data T
}
package main
import "fmt"
func main() {
PrintType(1)
PrintType("hello")
PrintType(1.1)
}
func PrintType[T any](t T) {
fmt.Printf("type:%T,value:%v\n", t, t)
}
/* 輸出結果
type:int,value:1 // Line 6 輸出
type:string,value:hello // Line 7 輸出
type:float64,value:1.1 // Line 8 輸出
*/
package main
import "fmt"
func main() {
album := []Album{
{Id: 1, Name: "album1", Artist: "artist1"},
{Id: 2, Name: "album2", Artist: "artist2"},
{Id: 3, Name: "album3", Artist: "artist3"},
}
rep := GeneralResponse[[]Album]{
Status: 200,
Data: album,
Message: "success",
}
fmt.Println(rep)
}
type GeneralResponse[T any] struct {
Status int
Data T
Message string
}
type Album struct {
Id int
Name string
Artist string
}
今天簡單介紹了 Go 的 generic 用法
泛型的概念也是在先前寫 Swift 寫到後面才開始體會到的
泛型的美好,值得你擁有 -> 好像一句 Slogan 哈哈哈
明天開始就要進入 Go 的 Concurrency (並發) 世界了~
明天見~