前言
Go语言是由Google公司开发的一门编程语言,具有简洁的语法和高效的开发体验,支持高并发编程且性能出色。它跨平台能力强,拥有丰富的标准库和良好的扩展性,适用于后端开发、云计算、分布式系统和命令行工具等多种应用场景。
目录
Print系列函数
Print系列函数会将内容输出到系统的标准输出,区别在于Print函数直接输出内容,Printf函数支持格式化输出字符串,Println函数会在输出内容的结尾添加一个换行符。
-
Print()
-
功能:将参数列表中的各个参数转换为字符串并写入到标准输出中,非字符串参数之间会添加空格,返回写入的字节数。
-
函数签名:
func Print(a ...interface{}) (n int, err error)
-
-
Println()
-
功能:与
Print()
类似,但会在输出的最后添加一个换行符,所有参数之间也会添加空格。 -
函数签名:
func Println(a ...interface{}) (n int, err error)
-
-
Printf()
-
功能:将参数列表
a
填写到格式字符串format
的占位符中,填写后的结果写入到标准输出中,返回写入的字节数。 -
函数签名:
func Printf(format string, a ...interface{}) (n int, err error)
-
示例:
func main () {
name := "小明"
fmt.Print("直接输出内容")
fmt.Println("内容结尾添加一个换行符")
fmt.Printf("格式化输出:%v\n", name)
}
输出结果:
直接输出内容内容结尾添加一个换行符
格式化输出:小明
格式化规则:
动词 | 说明 | 示例 |
---|---|---|
%d | 十进制有符号整数 | %d → 123 |
%x | 十六进制有符号整数 | %x → 7b |
%f | 浮点数 | %f → 123.456 |
%s | 字符串 | %s → hello |
%q | 双引号包围的字符串,必要时会转义 | %q → "hello" |
%v | 默认格式 | %v → 123 、hello 等 |
%% | 百分号本身 | %% → % |
Fprint系列函数
这些函数与Print
系列功能类似,但会将转换结果写入到io.Writer
中,例如文件。
-
Fprint()
-
函数签名:
func Fprint(w io.Writer, a ...interface{}) (n int, err error)
-
-
Fprintln()
-
函数签名:
func Fprintln(w io.Writer, a ...interface{}) (n int, err error)
-
-
Fprintf()
-
函数签名:
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
-
当你需要将内容输出到其他地方(如文件、网络等)时可以使用fmt.Fprint
。例如,你可以将输出写入到一个文件中。
示例:
package main
import (
"fmt"
"os"
)
func main() {
// 使用 fmt.Print 输出到控制台
fmt.Print("Hello, Print!\n")
// 使用 fmt.Fprint 输出到文件
file, err := os.Create("output.txt")
if err != nil {
fmt.Println("Error creating file:", err)
return
}
defer file.Close()
fmt.Fprint(file, "Hello, Fprint!")
}
在这个例子中,fmt.Print
将字符串输出到控制台,而 fmt.Fprint
将字符串输出到一个名为 output.txt
的文件中。
在 Go 语言中,
io.Writer
是一个接口类型,它定义了一个写入数据的方法。任何实现了这个接口的类型都可以被用作io.Writer。
常见的实现了
io.Writer
接口的对象:1. 文件 (
os.File
)2. 网络连接 (
net.Conn
)3. 缓冲区 (
bytes.Buffer
)4. 多路写入器 (
io.MultiWriter
)5. HTTP 响应写入器 (
http.ResponseWriter
)
Sprint系列函数
这些函数同样与Print
系列功能类似,但会将转换结果以字符串形式返回,而不是直接输出。
-
Sprint()
-
函数签名:
func Sprint(a ...interface{}) string
-
-
Sprintln()
-
函数签名:
func Sprintln(a ...interface{}) string
-
-
Sprintf()
-
函数签名:
func Sprintf(format string, a ...interface{}) string
-
示例:
package main
import (
"fmt"
)
func main() {
// 使用 Sprint
str1 := fmt.Sprint("Hello, ", "World!", 123)
fmt.Println(str1) // 输出:Hello, World!123
// 使用 Sprintln
str2 := fmt.Sprintln("Hello, ", "World!", 123)
fmt.Println(str2) // 输出:Hello, World! 123
// 使用 Sprintf
str3 := fmt.Sprintf("Hello, %s! You are %d years old.", "Alice", 30)
fmt.Println(str3) // 输出:Hello, Alice! You are 30 years old.
// 组合使用
name := "Bob"
age := 25
str4 := fmt.Sprintf("Name: %s, Age: %d", name, age)
fmt.Println(str4) // 输出:Name: Bob, Age: 25
}
输出结果:
Hello, World!123
Hello, World! 123
Hello, Alice! You are 30 years old.
Name: Bob, Age: 25
Errorf函数
-
Errorf()
-
功能:与
Sprintf()
类似,但结果字符串被包装成了error
类型。 -
函数签名:
func Errorf(format string, a ...interface{}) error
-
用法:
package main
import (
"fmt"
)
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, fmt.Errorf("除数不能为零")
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("错误:", err)
return
}
fmt.Println("结果:", result)
}