Type 自訂型別
- Go 不支援 overload → 但有對應的解決方案
package main
import "fmt"
// 底層型別為 int
type Test int
type Test2 int
func main() {
// 因為底層型別為 int,所以可以做運算
test := Test(87) + 1
test2 := Test2(34)
// 要轉成同型別
fmt.Println(test + Test(test2))
}
- receiver parameter
package main
import "fmt"
func main() {
test := Test("test123")
test.SayHi()
}
// 底層型別為 string
type Test string
// receiver parameter
func (t Test) SayHi() {
fmt.Println("hi", t)
}
- pointer parameter
package main
import "fmt"
func main() {
n := Number(2)
fmt.Println(n)
n.double()
fmt.Println(n)
}
type Number int
// 要用 pointer 才會變
func (n *Number) double() {
*n *= 2
}