Golang Go语言中这段 PHP 代码如何实现?

发布于 1周前 作者 ionicwang 来自 Go语言

Golang Go语言中这段 PHP 代码如何实现?

    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);


更多关于Golang Go语言中这段 PHP 代码如何实现?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

12 回复

你把 Array 想成 Map[string]interface{} :逃~

更多关于Golang Go语言中这段 PHP 代码如何实现?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


用 map ,后面还要涉及到排序,挺难搞的。

生成 tree 结构,不一样写吗

不复杂呀,慢慢琢磨琢磨~

简单的就用 map ,不想用 map 就自己定义一个 struct

树啊,结构体

php kv 对是保序的吗?
那样的话可以考虑一下 struct {key string; value interface{}}[] (逃

这种序列化分类的功能,应该挺常见的吧,不会写的话,自己网上搜一下吧。

golang 真是表达力很弱的语言,不适合拿来做业务开发

自己写了一个,可以参考: https://github.com/coscms/tree

在将PHP代码转换为Go语言时,需要注意两者在语法、数据类型、标准库等方面的差异。虽然PHP和Go都是强类型语言,但它们的处理方式有所不同。以下是一个通用的转换思路,假设PHP代码是简单的数据处理逻辑:

示例PHP代码

<?php
$a = 10;
$b = 20;
$sum = $a + $b;
echo "The sum is: " . $sum;
?>

对应的Go语言实现

package main

import (
    "fmt"
)

func main() {
    var a int = 10
    var b int = 20
    sum := a + b
    fmt.Printf("The sum is: %d\n", sum)
}

转换要点

  1. 变量声明:Go语言中变量需要显式声明类型,而PHP则通过赋值自动推断。
  2. 字符串拼接:PHP使用.进行字符串拼接,Go语言使用+(对于字符串类型)。
  3. 输出:PHP使用echo,Go语言使用fmt.Printffmt.Println进行格式化输出。
  4. 包管理:Go语言使用包(package)来组织代码,而PHP通常通过文件或类来组织。

请注意,具体的转换细节会根据PHP代码的具体逻辑和复杂度有所不同。在实际转换过程中,可能需要处理更多数据类型、函数、控制结构等。对于更复杂的PHP代码,建议逐步分解并逐一转换为Go语言代码。

回到顶部