qishuai 關注
package main
import "fmt"
type person struct
func main() ,
2:person,
3:person,
}//編譯錯誤:cannot assign to struct field m[1].name in map
m[1].name = "scrapup"
}
package main
import "fmt"
type person struct
func main() ,
2:&person,
3:&person,
}fmt.println(m[1].name)
m[1].name = "scrapup"
fmt.println(m[1].name)
}
小結:
第一種方式之所以編譯錯誤是因為map的value並不能得到該值對應的位址,故不能對其內容進行修改第二種方式map的value本身就是位址型別,當然就能修改
但有文章指出:key和value中沒有指標可以使gc scanning更快; 具體沒測試,這裡只是延伸知識,使用的時候注意即可。
package main
import "fmt"
type person struct
func main() ,
2:person,
3:person,
}fmt.println(m[1].name)
//編譯成功
m[1].name = "scrapup"
fmt.println(m[1].name)
}
總結: 軟體的可維護性和可復用性
軟體的復用 reuse 或重用擁有眾多優點,如可以提高軟體的開發效率,提高軟體質量,節約開發成本,恰當的復用還可以改善系統的可維護性。物件導向設計復用的目標在於實現支援可維護性的復用。在物件導向的設計裡面,可維護性復用都是以物件導向設計原則為基礎的,這些設計原則首先都是復用的原則,遵循這些設計原則可...
golang的可空型別和零值
可空型別可以置為nil 在go裡面,基本型別都是不可空型別 var a int nil var a int default value of int,cannot be nil fmt.println a 0 0 types zero value int,int8,int16,int32,int64...
效能和可測試性的選擇
服務端存放的是所有使用者的資訊,資料同步的功能是獲取本使用者的資訊到本地資料庫。服務端將各資訊以json的格式發到客戶端,客戶端比較資料庫的每條記錄和json內容是否完全相同,如果完全相同則不更新,否則更新。這樣做,提高了新能,但大幅降低了可測試性。63個表,估計平均每個表7條記錄,必須測試400次...