V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
dong568789
V2EX  ›  Go 编程语言

这段 PHP 代码如何用 go 来实现?

  •  
  •   dong568789 · 2021-12-21 16:06:30 +08:00 · 2476 次点击
    这是一个创建于 854 天前的主题,其中的信息可能已经有所发展或是发生改变。
        function tree(array $items)
        {
            $ids = [];
            foreach ($items as $item)
            {
                if ($item['id'] == $item['pid']) continue; //如果父 ID 等于自己,避免死循环,跳过
    
                $ids[] = $item['id'];
                $items[ ($item['pid']) ][ 'children' ][ ($item['id']) ] = &$items[ ($item['id']) ];
            }
    
            $result = Arr::except($items, $ids);
            return count($result) === 1 ? Arr::get(array_pop($result), 'children', []) : $result;
    
        }
    
        $items = [
            ['id' => 0, 'name' => 'none', 'pid' => 0],
            ['id' => 1, 'name' => 'test', 'pid' => 0],
            ['id' => 2, 'name' => 'test1', 'pid' => 1],
            ['id' => 3, 'name' => 'test2', 'pid' => 1],
        ];
        
        tree($items);
    
    第 1 条附言  ·  2021-12-23 10:03:04 +08:00
    可能没有描述的清楚,这个是 php 生成树形结构的代码,我是想 go 能不能也使用这种引用赋值的方式来实现相同的功能。
    11 条回复    2021-12-24 20:08:25 +08:00
    xjqxz2
        1
    xjqxz2  
       2021-12-21 16:35:42 +08:00
    你把 Array 想成 Map[string]interface{} :逃~
    dong568789
        2
    dong568789  
    OP
       2021-12-21 16:46:43 +08:00
    @xjqxz2 用 map ,后面还要涉及到排序,挺难搞的。
    object123
        3
    object123  
       2021-12-21 17:00:31 +08:00
    生成 tree 结构,不一样写吗
    moliliang
        4
    moliliang  
       2021-12-21 17:33:52 +08:00
    不复杂呀,慢慢琢磨琢磨~
    ThanksSirAlex
        5
    ThanksSirAlex  
       2021-12-21 17:40:17 +08:00   ❤️ 1
    简单的就用 map ,不想用 map 就自己定义一个 struct
    JaguarJack
        6
    JaguarJack  
       2021-12-21 18:45:06 +08:00 via iPhone
    树啊,结构体
    2i2Re2PLMaDnghL
        7
    2i2Re2PLMaDnghL  
       2021-12-22 10:16:19 +08:00
    php kv 对是保序的吗?
    那样的话可以考虑一下 struct {key string; value interface{}}[] (逃
    yrj
        8
    yrj  
       2021-12-22 13:20:24 +08:00 via iPad
    这种序列化分类的功能,应该挺常见的吧,不会写的话,自己网上搜一下吧。
    sanggao
        10
    sanggao  
       2021-12-24 10:39:00 +08:00
    golang 真是表达力很弱的语言,不适合拿来做业务开发
    admpubcom
        11
    admpubcom  
       2021-12-24 20:08:25 +08:00 via iPhone
    自己写了一个,可以参考: https://github.com/coscms/tree
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3294 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:18 · PVG 20:18 · LAX 05:18 · JFK 08:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.