- 1 使用 struct 解析為Json時(shí)
- 如果不想導(dǎo)出字段 小寫
- 如果不想導(dǎo)出字段,又想在別的程序中使用凤跑,不用getter/setter的話叛复,無解扔仓。
- 如果想自定義json名字咖耘,在后面加上
json:xxx
- 2 傳統(tǒng)面向?qū)ο蟮奶攸c(diǎn)
- 多態(tài):只能通過interface
- 封裝:方法/變量 小寫為包內(nèi)訪問,大寫為包外也可訪問
- 泛型:沒有版保。但是個(gè)人覺得常用的可以通過接口來規(guī)定-->實(shí)現(xiàn)夫否,比如不同類型的排序算法。
//一個(gè)泛型的例子凰慈,排序
type Sortable interface {
Len() int
Less(int, int) bool
Swap(int, int)
}
func bubbleSort(array Sortable) {
for i := 0; i < array.Len(); i++ {
for j := 0; j < array.Len()-i-1; j++ {
if array.Less(j+1, j) {
array.Swap(j, j+1)
}
}
}
}
//實(shí)現(xiàn)接口的整型切片
type IntArr []int
func (array IntArr) Len() int {
return len(array)
}
func (array IntArr) Less(i int, j int) bool {
return array[i] < array[j]
}
func (array IntArr) Swap(i int, j int) {
array[i], array[j] = array[j], array[i]
}
//實(shí)現(xiàn)接口的字符串微谓,按照長度排序
type StringArr []string
func (array StringArr) Len() int {
return len(array)
}
func (array StringArr) Less(i int, j int) bool {
//這里可以根據(jù)不同的類型,實(shí)現(xiàn)不同的比值
return len(array[i]) < len(array[j])
}
func (array StringArr) Swap(i int, j int) {
array[i], array[j] = array[j], array[i]
}
//測(cè)試
func main() {
intArray1 := IntArr{3, 4, 2, 6, 10, 1}
bubbleSort(intArray1)
fmt.Println(intArray1)
stringArray1 := StringArr{"hello", "i", "am", "go", "lang"}
bubbleSort(stringArray1)
fmt.Println(stringArray1)
}
/*輸出結(jié)果為:
[1 2 3 4 6 10]
[i am go lang hello]
*/
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者