Golang程序 从两个绝对路径获得相对路径
在Golang中,为了从两个绝对路径中获得相对路径,我们使用filepath和string包。相对路径告诉我们文件相对于当前工作目录的位置,而绝对路径告诉我们文件从根目录开始的位置。在第一种方法中,我们将使用filepath包函数,在第二种方法中,我们将使用strings包函数。
方法1:使用文件路径包
在这个程序中,使用path/filepath包中的filepath.Base函数提取文件的基本名称,也就是没有目录路径的文件名称。然后使用fmt包将提取的文件名显示在控制台。
语法
这个函数用于查找两个文件路径之间的相对路径。它需要两个输入–basepath和targetpath。
算法
- 第1步 – 创建一个包main,并在程序中声明fmt(格式包)、path/filepath包,其中main产生可执行代码,fmt帮助格式化输入和输出。
-
第2步 – 创建一个函数main,并在该函数中创建两个路径变量path1和path,并给它们分配绝对路径。
-
第3步 – 现在使用filepath.Rel函数从两个绝对路径中获得相对路径。
-
第4步 – 如果成功获得路径,它将被打印在控制台,但如果没有成功获得,则在控制台打印错误并返回。
-
第5步 – 使用fmt.Println()函数执行打印语句。
例子
在这个例子中,我们将使用filepath.Rel函数,从两个绝对路径中获得相对路径。让我们看一下代码。
输出
方法2:使用字符串包
在这种方法中,首先使用strings.Split函数将绝对路径划分为其组成部分。在下一步,组件被迭代和比较,以找到两条路径之间的共同前缀。如果路径之间没有共同的前缀,则返回错误。否则,首先添加Path1中剩余的组件,然后再添加Path2中剩余的组件,以创建相对路径。
语法
Split()函数用于通过提供的分隔符来分割一个字符串。这个函数存在于strings包中,它接受要分割的字符串和分隔符作为一个参数。然后,该函数返回最终的字符串数组作为结果。
len()函数是用来获取任何参数的长度的。它需要一个参数作为数据类型的变量,我们希望找到它的长度,并返回整数值,即该变量的长度。
算法
- 第1步 – 创建一个包main,并在程序中声明fmt(格式包)、字符串包,其中main产生可执行代码,fmt帮助格式化输入和输出。
-
第2步 – 用main函数中定义的两个绝对路径和一个字符串类型的错误创建一个函数relativePath。
-
第3步– 在这一步中,使用strings.Split函数将路径分成若干部分。
-
第4步 – 然后,遍历组件1和组件2,检查它们是否有共同的前缀或它们是否相等。
-
第5步 – 如果路径没有共同的前缀,在控制台打印出来。
-
第6步 – 然后,通过在绝对路径的其余部分添加./来建立一个相对路径。
-
第7步 – 在所有前面的步骤完成后,将相对路径返回给函数。
-
第8步 – 在main中,如果成功获得相对路径,它将被打印在控制台,但如果在获得路径时发生错误,则打印错误并返回。
-
第9步 – 使用fmt.Println()函数执行打印语句。
例子
在这个例子中,我们将使用strings.Split函数将路径分成若干部分并建立相对路径。
输出
总结
我们用两个例子执行了从两个绝对路径获取相对路径的程序。在第一个例子中,我们使用filepath.Rel来寻找相对路径,在第二个例子中,我们使用strings包函数。