Go1.81bug

learnGo · 2017-04-11 14:27:01 · 1846 次点击 · 预计阅读时间不到 1 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2017-04-11 14:27:01 的文章,其中的信息可能已经有所发展或是发生改变。

学习ing,所以各种用法测试....

感觉是bug,但是不确定

红框中哪个是00i字母i....字母i....

learnGo
标题

 


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1846 次点击  
加入收藏 微博
5 回复  |  直到 1999-12-31 16:00:00
iPixelOldC
iPixelOldC · #1 · 8年之前

我想知道int型前面带00有何意义。。。直接写数字123不就行了。。你这样写索引还麻烦,你总不可能i那里定义为000?然后i++?噗。所以你这里索引00i貌似完全无效吧。。。索引里面怎么可能有自动连接00和i变量所代表的数字这种方法存在。。。反正我是没见过

simple
simple · #2 · 8年之前

首先 001,002,003 这种字面量在golang中应该当八进制数来处理。其次 00i并不等于i, 00i 是一个复数类型,直接用用i做索引吧

MileStone
MileStone · #3 · 8年之前

map 本身是没有顺序的, 一般遍历map都会用 for range 来遍历

addchild
addchild · #4 · 8年之前

这不是bug,00i是一个复数类型这里的i并不是你循环中的变量,你可以看下复数定义

lerry
lerry · #5 · 8年之前

首先 00 开头是八进制的;

     func TestForMap(t *testing.T) {

          myMaps := map[int]string{
            001: "c++",
            002:"java",
            003:"golang",
           //009:"objective-c",  //error
            }
            for k, v := range myMaps {
              t.Log(k, v)
            }

            myMaps[001] = "one"
            myMaps[002] = "two"
            myMaps[003] = "three"

            for i := 0; i < len(myMaps); i++ {
                    t.Log(00i)
            }
           }

可以看到最后的输出并不是 i;而是如下的结果:

        baseController_test.go:60: 3 golang
    baseController_test.go:60: 1 c++
    baseController_test.go:60: 2 java
    baseController_test.go:68: (0+0i)
    baseController_test.go:68: (0+0i)
    baseController_test.go:68: (0+0i)
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传