Go語言中的自定義類型與類型別名詳解
更新時間:2026年04月16日 09:56:42 作者:王碼碼2035哦
文章介紹了Go語言中的自定義類型和類型別名,自定義類型使用type關鍵字創(chuàng)建,基于基本類型、結構體或接口,類型別名使用typealias=original語法,創(chuàng)建新名稱引用原有類型,文章介紹的非常詳細,感興趣的朋友一起看看吧
1. 自定義類型
在Go語言中,我們可以使用type關鍵字創(chuàng)建自定義類型。自定義類型可以基于基本類型、結構體、接口等創(chuàng)建。
1.1 基于基本類型創(chuàng)建自定義類型
package main
import "fmt"
// 基于int創(chuàng)建自定義類型
type MyInt int
// 為自定義類型添加方法
func (m MyInt) Add(other MyInt) MyInt {
return m + other
}
func main() {
var a MyInt = 10
var b MyInt = 20
fmt.Println("a + b =", a.Add(b))
}1.2 基于結構體創(chuàng)建自定義類型
package main
import "fmt"
type Person struct {
Name string
Age int
}
// 為Person添加方法
func (p Person) Greet() string {
return fmt.Sprintf("Hello, my name is %s and I'm %d years old", p.Name, p.Age)
}
func main() {
p := Person{Name: "Alice", Age: 30}
fmt.Println(p.Greet())
}2. 類型別名
類型別名使用type alias = original語法,它創(chuàng)建一個新的名稱來引用原有類型,但不會創(chuàng)建新的類型。
package main
import "fmt"
// 類型別名
type MyString = string
type IntSlice = []int
func main() {
var s MyString = "Hello"
fmt.Println(s)
var numbers IntSlice = []int{1, 2, 3, 4, 5}
fmt.Println(numbers)
}3. 自定義類型與類型別名的區(qū)別
| 特性 | 自定義類型 | 類型別名 |
|---|---|---|
| 語法 | type NewType OriginalType | type NewType = OriginalType |
| 類型關系 | 新類型與原類型不同 | 新名稱是原類型的別名 |
| 方法 | 可以為新類型添加方法 | 共享原類型的方法 |
| 轉換 | 需要顯式轉換 | 可以隱式轉換 |
4. 實戰(zhàn)應用
4.1 領域特定類型
package main
import "fmt"
type Temperature float64
type Distance int
func (t Temperature) Celsius() Temperature {
return t
}
func (t Temperature) Fahrenheit() Temperature {
return t*9/5 + 32
}
func main() {
temp := Temperature(25)
fmt.Printf("%f°C = %f°F\n", temp.Celsius(), temp.Fahrenheit())
}4.2 類型安全
package main
import "fmt"
type UserID int
type ProductID int
func getUser(id UserID) string {
return fmt.Sprintf("User %d", id)
}
func getProduct(id ProductID) string {
return fmt.Sprintf("Product %d", id)
}
func main() {
userID := UserID(1)
productID := ProductID(2)
fmt.Println(getUser(userID))
fmt.Println(getProduct(productID))
// 類型安全,下面的代碼會編譯錯誤
// getUser(productID) // 類型不匹配
}5. 總結
- 自定義類型創(chuàng)建新的類型,提供更好的類型安全
- 類型別名只是原類型的新名稱,方便代碼重構和遷移
- 合理使用自定義類型可以提高代碼的可讀性和可維護性
- 為自定義類型添加方法可以實現面向對象的編程范式
到此這篇關于Go語言中的自定義類型與類型別名詳解的文章就介紹到這了,更多相關go自定義類型與類型別名內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Go語言resty http包調用jenkins api實例
這篇文章主要為大家介紹了Go語言resty http包調用jenkins api實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06

