初学go语言,extjs + java -》extjs + go 过程中,
type commonResult struct {
Result []searchResult `json:"result"`
RowCount int `json:"rowCount"`
Pages int `json:"pages"`
Code string `json:"code"`
Msg string `json:"msg"`
Success bool `json:"success"`
}
type searchResult struct {
FeeName string `json:"feeName"`
FeeType string `json:"feeType"`
FeeCode string `json:"feeCode"`
}
//当结构体是基本数据类型时,不用new就可以直接拿来使用。
for i := 0; i < 30; i++ {
var queryResult searchResult
queryResult.FeeType = "0"
queryResult.FeeName = "用户手续费"
queryResult.FeeCode = "00"
result.Result = queryResult
}
但是,当结构体里有 slice(数组) 类型时,就必须得make(new)了。否则,就报数组越界错误。
result := commonResult{make([]searchResult, 30), 0, 0, "", "", false}
分析,当由多个对象组成数组时,就需要额外的属性支持,比如size。但是,go语言的结构体 不是 java里的 arrylist,不能提供自动开辟空间,所以就只能通过make开辟空间了,好比java里的 String[] a = new String[10],当a new 过以后,a的属性里的length 自动是10.这就容易理解了。
但是,为啥基本数据类型 不用new 呢?为啥不统一呢。我想应该是go,来自于 C语言的缘故,反正这块理解起来不是很好。
---------------------
【转载】仅作分享,侵删
作者:heshi_82215
原文:https://blog.csdn.net/heshi_82215/article/details/52238189
|
|