<sup id="6nyre"></sup>

<em id="6nyre"></em>
<div id="6nyre"><ol id="6nyre"></ol></div>

  • <nav id="6nyre"><sub id="6nyre"><source id="6nyre"></source></sub></nav>

    <em id="6nyre"><label id="6nyre"><object id="6nyre"></object></label></em>

      <div id="6nyre"></div>
        <div id="6nyre"></div>
        1. 400-700-1307

          【GO+区块链面试题】考点foreach

          2019-01-26 17:05
          以下代码有什么问题,说明原因。
           
          1.type student struct {
          2.Name string
          3.Age  int
          4.}
          5.func pase_student() {
          6.m := make(map[string]*student)
          7.stus := []student{
          8.{Name: "zhou", Age: 24},
          9.{Name: "li", Age: 23},
          10.{Name: "wang", Age: 22},
          11.}
          12.for _, stu := range stus {
          13.m[stu.Name] = &stu
          14.}
          15.}
          考点:foreach
          解答:
          这样的写法初学者经常会遇到的,很危险! 与Java的foreach一样,都是使用副本的方式。所以m[stu.Name]=&stu实际上一致指向同一个指针, 最终该指针的值为遍历的最后一个struct的值拷贝。 就像想修改切片元素的属性:
           
          1.for _, stu := range stus {
          2.stu.Age = stu.Age+10
          3.}
          也是不可行的。 大家可以试试打印出来:

           
          1.func pase_student() {
          2.m := make(map[string]*student)
          3.stus := []student{
          4.{Name: "zhou", Age: 24},
          5.{Name: "li", Age: 23},
          6.{Name: "wang", Age: 22},
          7.}
          8.// 错误写法
          9.for _, stu := range stus {
          10.m[stu.Name] = &stu
          11.}
          12.for k,v:=range m{
          13.println(k,"=>",v.Name)
          14.}
          15.// 正确
          16.for i:=0;i<len(stus);i++  {
          17.m[stus[i].Name] = &stus[i]
          18.}
          19.for k,v:=range m{
          20.println(k,"=>",v.Name)
          21.}
          22.}
          关注?#20540;?#36830;更多精彩内容等着你

          开班信息

          当前校区

          ?#26412;?#26657;区
          • ?#26412;?#26657;区
          • 上海校区
          • 广州校区
          • 沈阳校区
          • 杭州校区
          • 南京校区
          • 郑州校区
          • 成都校区
          • 深圳校区
          • 西安校区
          • 苏州校区
          • 深圳沙井
          • 深圳观澜
          • 深圳龙岗
          • 武汉校区
          • 西宁校区
          • 石家庄校区
          • 湖北咸宁
          • 广东惠州
          • 广东佛山
          • ?#26412;?/span> UI/UE就业班 2019-04-17 报名中
          • ?#26412;?/span> PHP就业班 2019-04-18 报名中
          • ?#26412;?/span> Java训练营 2019-04-24 报名中
          • ?#26412;?/span> Python训练营 2019-04-24 报名中
          • ?#26412;?/span> Java就业班 2019-05-09 报名中
          • ?#26412;?/span> Python就业班 2019-05-09 报名中
          • ?#26412;?/span> PHP就业班 2019-05-16 报名中

                            Copyright © 2007-2019 IT?#20540;?#36830;教育 版权所有 京ICP备11018177号  京公网安备 11010802026987号

                            11选5 直播
                            <sup id="6nyre"></sup>

                            <em id="6nyre"></em>
                            <div id="6nyre"><ol id="6nyre"></ol></div>

                          • <nav id="6nyre"><sub id="6nyre"><source id="6nyre"></source></sub></nav>

                            <em id="6nyre"><label id="6nyre"><object id="6nyre"></object></label></em>

                              <div id="6nyre"></div>
                                <div id="6nyre"></div>
                                1. <sup id="6nyre"></sup>

                                  <em id="6nyre"></em>
                                  <div id="6nyre"><ol id="6nyre"></ol></div>

                                2. <nav id="6nyre"><sub id="6nyre"><source id="6nyre"></source></sub></nav>

                                  <em id="6nyre"><label id="6nyre"><object id="6nyre"></object></label></em>

                                    <div id="6nyre"></div>
                                      <div id="6nyre"></div>