开发者

Go语言fmt模块的完整方法详解及示例代码

目录
  • 前言
  • 一、输出函数
    • 1python. Print / Println / Printf
      • 功能
      • 示例
    • 2. Fprint / Fprintln / Fprintf
      • 功能
      • 示例
    • 3. Sprint / Sprintln / Sprintf
      • 功能
      • 示例
  • 二、输入函数
    • 1. Scan / Scanln / Scanf
      • 功能
      • 示例
    • 2. Fscan / Fscanln / Fscanf
      • 功能
      • 示例
    • 3. Sscan / SscanAObbmWUfXIln / Sscanf
      • 功能
      • 示例
  • 三、格式化动词
    • 四、其他功能
      • 1. Errorf
        • 功能
        • 示例
      • 2. Formatter 和 Stringer 接口
        • 功能
        • 示例
    • 五、注意事项
      • 六、完整函数列表

        前言

        php下是 Go 语言 fmt 模块的完整方法详解及示例,涵盖所有核心功能:

        一、输出函数

        将数据写入标准输出、文件或字符串。

        1. Print / Println / www.devze.com;Printf

        功能

        • Print: 写入标准输出,不换行。
        • Println: 写入标准输出并换行。
        • Printf: 格式化写入标准输出。

        示例

        fmt.Print("Hello, ")        // 输出:Hello, 
        fmt.Println("World!")       // 输出:World!(换行)
        fmt.Printf("%s %d\n", "Year:", 2023) // 输出:Year: 2023(换行)
        

        2. Fprint / Fprintln / Fprintf

        功能

        将内容写入指定的 io.Writer(如文件、网络连接)。

        示例

        file, _ := os.Create("output.txt")
        fmt.Fprint(file, "Hello ")     // 写入文件内容:Hello 
        fmt.Fprintln(file, "World!")   // 写入文件内容:World!(换行)
        fmt.Fprintf(file, "Value: %d", 100) // 写入文件内容:Value: 100
        

        3. Sprint / Sprintln / Sprintf

        功能

        将内容格式化为字符串并返回。

        示例

        s1 := fmt.Sprint("Hello", 123)       // s1 = "Hello123"
        s2 := fmt.Sprintln("World!")         // s2 = "World!\n"
        s3 := fmt.Sprintf("Value: %d", 100)  // s3 = "Value: 100"
        

        二、输入函数

        从标准输入、文件或字符串读取数据。

        1. Scan / Scanln / Scanf

        功能

        • Scan: 从标准输入读取,以空格分隔。
        • Scanln: 读取到换行符停止。
        • Scanf: 按格式字符串读取。

        示例

        var a int
        var b string
        
        // 输入:10 ABC
        fmt.Scan(&a, &b)      // a=10, b="ABC"
        
        // 输入:20 XYZ\n
        fmt.Scanln(&a, &b)    // a=20, b="XYZ"
        
        // 输入:Number: 30
        fmt.Scanf("Number: %d", &a) // a=30
        

        2. Fscan / Fscanln / Fscanf

        功能

        从指定的 io.Reader(如文件)读取数据。

        示例

        file, _ := os.Open("data.txt")
        var x int
        var y string
        
        // 文件内容:100 golang
        fmt.Fscan(file, &x, &y)    // x=100, y="Golang"
        
        // 文件内容:200 Rust\n
        fmt.Fscanln(file, &x, &y)  // x=200, y="Rust"
        
        // 文件内容:Value: 300
        fmt.Fscanf(file, "Value: %d", &x) // x=300
        

        3. Sscan / Sscanln / Sscanf

        功能

        从字符串解析数据。

        示例

        str := "404 Not Found"
        var code int
        var msg string
        
        fmt.Sscan(str, &code, &msg)     // code=404, msg="Not"
        fmt.Sscanln("500 Error\n", &code, &msg) // code=500, msg="Error"
        fmt.Sscanf("Status: 200 OK", "Status: %d %s", &code, &msg) // code=200, msg="OK"
        

        三、格式化动词

        常用格式化占位符(部分):

        动词说明示例
        %v默认格式%v → {Alice 30}
        %d十进制整数%d → 25
        %f浮点数%f → 3.141593
        %s字符串%s → “hello”
        %t布尔值%t → true
        %p指针地址%p → 0xc0000a
        %T类型%T → int

        四、其他功能

        1. Errorf

        功能

        生成格式化错误。

        示例

        err := fmt.Errorf("无效的用户ID: %d", -1)
        // err.Error() = "无效的用户ID: -1"
        

        2. Formatter 和 Stringer 接口

        功能

        自定义类型的格式化行为。

        示例

        type User struct {
            Name string
            Age  int
        }
        
        // 实现 Stringer 接口
        func (u User) String() string {
            return fmt.Sprintf("%s (%d岁)", u.Name, u.Age)
        }
        
        // 实现 Formatter 接口
        func (u User) Format(f fmt.State, verb rune) {
            if verb == 'v' {
                fmt.Fprintf(f, "User{Name:%s, Age:%d}", u.Name, u.Age)
            }
        }
        
        u := User{"Bob", 30}
        fmt.Println(u)        // 输出:Bob (30岁)
        fmt.Printf("%v", u)   // 输出:User{Name:Bob, Age:30}
        

        五、注意事项

        • 错误处理Scan 系列函数返回成功解析的项数和错误。
          n, err := fmt.Scan(&a, &b)
          if err != nil {
              log.Fatal("输入错误:", err)
          }
          
        • 性能:频繁字符串拼接时,优先使用 strings.Builder 而非 Sprintf

        六、完整函数列表

        函数签名功能说明
        Print(a ...any) (n int, err error)标准输出
        Println(a ...any) (n int, err error)标准输出并换行
        Printf(format string, a ...any) (n int, err error)格式化输出
        Fprint(w io.Writer, a ...any) (n int, err error)写入 io.Writer
        Sprint(a ...any) string返回格式化字符串
        Errorf(format string, a ...any) error生成格式化错误

        通过掌握 fmt 包的方法,可以高效处理输入输出、字符串格式化及错误生成。

        到此这篇关于Go语言fmt模块的文章就介绍到这了,更多相关Go语言fmt模块详解内容请搜索编php程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

        0

        上一篇:

        下一篇:

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        最新开发

        开发排行榜