A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不二晨 金牌黑马   /  2018-12-18 16:52  /  2009 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

初学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


2 个回复

倒序浏览
奈斯
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马