1. Ext 方法
方法签名
func Ext(path string) string
path/filepath 包下的 Ext 方法是用于处理文件路径的标准工具,可以提取文件路径中的扩展名。该方法接收一个路径字符串 path,返回该路径中最后一个元素(通常是文件名)的扩展名。
- 返回值格式:返回的字符串包含点号
- 无扩展名:如果路径中没有扩展名,返回空字符串 “”
使用示例:
package main
import (
"fmt"
"path/filepath"
)
func main() {
// 1. 普通文件
path1 := "/home/user/docs/report.pdf"
ext1 := filepath.Ext(path1)
fmt.Printf("扩展名: %s\n", ext1) // 输出: .pdf
// 2. 没有扩展名的文件
path2 := "/var/log/syslog"
ext2 := filepath.Ext(path2)
fmt.Printf("扩展名: '%s'\n", ext2) // 输出: '' (空字符串)
// 3. 多个点号的情况 (只取最后一个点号之后的内容)
path3 := "archive.tar.gz"
ext3 := filepath.Ext(path3)
fmt.Printf("扩展名: %s\n", ext3) // 输出: .gz
}
2. Join 方法
path/filepath 包下的 Join 方法可以将多个路径片段智能地拼接成一个完整的路径。它可以根据当前操作系统自动选择正确的路径分隔符(Windows 下用 \ ,Linux/macOS 下用 / ),从而避免硬编码分隔符导致的兼容性问题。
方法签名
func Join(elem ...string) string
该方法接收任意数量的字符串参数,将其拼接起来,其中如果片段之间缺少分隔符,会自动添加,也会移除多余的分隔符和当前目录符号。
使用示例:
package main
import (
"fmt"
"path/filepath"
)
func main() {
// 1. 基础拼接
path1 := filepath.Join("data", "logs", "app.log")
fmt.Println(path1)
// Linux/macOS 输出: data/logs/app.log
// Windows 输出: data\logs\app.log
// 2. 处理多余的分隔符 (自动清理)
path2 := filepath.Join("data//", "logs")
// 输出: data/logs (多余的 / 被去掉了)
// 3. 忽略空字符串
path3 := filepath.Join("data", "", "app.log")
// 输出: data/app.log (空字符串被忽略)
}

No responses yet