〇、关于 fmt

fmt 标准库是 Go 语言标准库的一部分,提供了格式化字符串、输入输出等基本功能。通过 fmt 库,我们可以进行简单的格式化输出、读取用户输入、错误输出等操作。

fmt 库实现了类似 C 语言 printf 和 scanf 的格式化 I/O,主要分为向外输出内容和获取输入内容两大部分,本文将通过示例来分别测试。

一、输出

GO 语言的输出是由 Print 系列函数完成的,下面列一下都有哪些输出类型。

1.1 Print-直接输出

Print 函数直接输入内容到终端,是最简单的输出方式。

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. func main() {
  6. fmt.Print("第一段")
  7. fmt.Print("第二段")
  8. fmt.Print("第三段")
  9. }

由输出可见,Print 函数直接输出引号中的内容,不进行任何修饰。

1.2 Printf-以指定格式输出

fmt.Printf 是 Go 语言 fmt 包中的一个函数,用于格式化输出字符串。

它的基本语法是 fmt.Printf(format, a, b, c, ...),其中 format 是一个字符串,用于指定输出的格式,a, b, c, ... 是需要输出的参数。fmt.Printf 会按照 format 字符串中的格式说明符,将参数转换为相应的格式输出。

对于 format 中的格式说明,有比较多格式配置,下面总结下。

1.2.1 通用占位符

占位符 说明
%v 根据值的默认格式标识仅输出值
%+v 在 v% 的基础上,带上字段名
%#v 按照值的 GO 语法表示输出,类型+值
%T 输出值的类型
%% 输出单个字符:百分号

下面通过输出三个类型(常量、字符串、自定义结构)来简单演示下:

  1. package main
  2. import "fmt"
  3. func main() {
  4. pi := 3.1415926
  5. fmt.Printf("%%v-pi :%v \n", pi) // %v 值的类型输出
  6. fmt.Printf("%%+v :%+v \n", pi)
  7. fmt.Printf("%%#v :%#v \n", pi)
  8. fmt.Printf("%%T :%T \n", pi)
  9. str := "chengzi"
  10. fmt.Printf("%%v-str:%v \n", str)
  11. fmt.Printf("%%+v :%+v \n", str)
  12. fmt.Printf("%%#v :%#v \n", str)
  13. fmt.Printf("%%T :%T \n", str)
  14. stu := struct {
  15. name string
  16. address string
  17. }{"橙子", "河南"}
  18. fmt.Printf("%%v-stu:%v \n", stu)
  19. fmt.Printf("%%+v :%+v \n", stu)
  20. fmt.Printf("%%#v :%#v \n", stu)
  21. fmt.Printf("%%T :%T \n", stu)
  22. }

1.2.2 布尔类型占位符

针对布尔类型,有个专用的占位符:%t,用于直接输出 true/false

如果要输出的字段不是布尔类型,不会中断程序运行,只会有警告提示。

  1. package main
  2. import "fmt"
  3. func main() {
  4. fmt.Printf("%%t :%t \n", true)
  5. fmt.Printf("%%t :%t \n", false)
  6. fmt.Printf("%%t :%t \n", "chengzi")
  7. }

1.2.3 整型数值占位符

占位符 说明
%b 输出值对应的二进制格式值
%c 输出值对应的 Unicode 码值
%d 输出值对应的十进制格式值
%o 输出值对应的八进制格式值
%x 输出值对应的十六进制格式值,小写字母 a~f
%X 输出值对应的十六进制格式值,大写字母 A~F
%U 输出值对应的 Unicode 格式:U+1234
%q 该值对应的单引号括起来的 Go 语法字符字面值,必要时会采用安全的转义表示

注:统一码(Unicode),也叫万国码、单一码,由统一码联盟开发,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。其中 3400-4DBF/4E00-9FFF/20000-3FFFF,表示中日韩越统一表意文字(CJKV Unified Ideographs)。

如下通过对整数 100 的多类型输出,示例说明一下各个占位符对应的区别:

  1. package main
  2. import "fmt"
  3. func main() {
  4. num := 100
  5. fmt.Printf("%%b :%b\n", num)
  6. fmt.Printf("%%c :%c\n", num)
  7. fmt.Printf("%%d :%d\n", num)
  8. fmt.Printf("%%o :%o\n", num)
  9. fmt.Printf("%%x :%x\n", num)
  10. fmt.Printf("%%X :%X\n", num)
  11. fmt.Printf("%%U :%U\n", num)
  12. fmt.Printf("%%q :%q\n", num)
  13. }

1.2.4 浮点数占位符

占位符 说明
%e 科学计数法,小写字母:-1.234567e+89
%E 科学计数法,大写字母:-1.234567E+89
%f 有小数(六位)、无指数:123.456789
%F 同上
%g 以使用更简洁、准确的格式输出为目的,灵活采用 %e 或 %f 格式,小数保留前十四位
%G 以使用更简洁、准确的格式输出为目的,灵活采用 %E 或 %F 格式
  1. package main
  2. import "fmt"
  3. func main() {
  4. f := 123.45600
  5. fmt.Printf("f-%%e :%e\n", f)
  6. fmt.Printf("f-%%E :%E\n", f)
  7. fmt.Printf("f-%%f :%f\n", f)
  8. fmt.Printf("f-%%F :%F\n", f)
  9. fmt.Printf("f-%%g :%g\n", f) // 最多保留十四位小数
  10. fmt.Printf("f-%%G :%G\n", f) // 最多保留十四位小数
  11. ff := 123.4560001001000111001000011001
  12. fmt.Printf("ff-%%e :%e\n", ff)
  13. fmt.Printf("ff-%%E :%E\n", ff)
  14. fmt.Printf("ff-%%f :%f\n", ff)
  15. fmt.Printf("ff-%%F :%F\n", ff)
  16. fmt.Printf("ff-%%g :%g\n", ff) // 最多保留十四位小数,末尾若是 0 默认省去
  17. fmt.Printf("ff-%%G :%G\n", ff) // 最多保留十四位小数
  18. }

1.2.5 字符串和 []byte 占位符

占位符 说明
%s 直接输出字符串或 []byte
%q 该值对应的双引号括起来的 Go 语法字符串字面值,必要时会采用安全的转义表示
%x 每个字节用两字符十六进制数表示,小写 a~f
%X 每个字节用两字符十六进制数表示,大写 A~F
  1. package main
  2. import "fmt"
  3. func main() {
  4. str := "橙子"
  5. fmt.Printf("%%s: %s\n", str)
  6. fmt.Printf("%%q: %q\n", str)
  7. fmt.Printf("%%x: %x\n", str)
  8. fmt.Printf("%%X: %X\n", str)
  9. byte := []byte("橙子")
  10. fmt.Printf("%%v: %v\n", byte)
  11. fmt.Printf("%%s: %s\n", byte)
  12. }

1.2.6 指针占位符

指针也是一个专门的占位符 %p,表示‘十六进制字符串’+‘0x’

  1. package main
  2. import "fmt"
  3. func main() {
  4. a := 18
  5. fmt.Printf("%p\n", &a)
  6. fmt.Printf("%#p\n", &a)
  7. }

1.2.7 宽度标识符

宽度标识符就是以浮点数占位符中的 %f 为基础,增加宽度配置。%[n].[m]f 其中 n 表示整个数值的宽度,m 表示小数位宽度。如下示例与代表的意义:

占位符 说明
%f 默认宽度、默认精度
%9f 宽度 9、默认精度
%.2f 默认宽度、精度 2
%9.2f 宽度 9、精度 2
%9.f 宽度 9、精度 0

注意:小数点也占用一个位数。

  1. package main
  2. import "fmt"
  3. func main() {
  4. n := 88.88
  5. fmt.Printf("%%f :%f\n", n) // 默认小数位为六位
  6. fmt.Printf("%%9f :%9f\n", n)
  7. fmt.Printf("%%10f :%10f\n", n)
  8. fmt.Printf("%%.2f :%.2f\n", n)
  9. fmt.Printf("%%9.2f :%9.2f\n", n)
  10. fmt.Printf("%%9.f :%9.f\n", n)
  11. }

1.2.8 其他占位符

占位符 说明
+ 总是输出数值的正负号;对 %q(%+q)会生成全部是 ASCII 字符的输出(通过转义)
 (一个空格)

对数值:正数前加空格而负数前加负号

对字符串:采用%x或%X时(% x或% X)会给各打印的字节之间加空格

-(一个横杠) 在输出右边填充空白,而不是默认的左边(即从默认的右对齐切换为左对齐)
#

八进制数前加 0(%#o)

十六进制数前加 0x,对于 %x(%#x);0X,对于 %X(%#X)

指针去掉前面的 0x,对于 %q(%#q),

unicode 值,对 %U(%#U)会输出空格和单引号括起来的 Go 字面值

0 使用 0 而不是空格填充,对于数值类型会把填充的 0 放在正负号后面
  1. package main
  2. import "fmt"
  3. func main() {
  4. fmt.Println("-----------------------------")
  5. num := -12.34
  6. num1 := 12.34
  7. fmt.Printf("%f %f\n", num, num1)
  8. fmt.Printf("%+f %+f\n", num, num1)
  9. fmt.Println("-----------------------------")
  10. num2 := -12.34
  11. num3 := 12.34
  12. fmt.Printf("%f %f\n", num2, num3)
  13. fmt.Printf("% f % f\n", num2, num3)
  14. str := "chengzi"
  15. fmt.Printf("%x\n% x\n", str, str)
  16. fmt.Println("-----------------------------")
  17. num4 := 77.77
  18. fmt.Printf("%10f\n", num4)
  19. fmt.Printf("%0-10f\n", num4)
  20. fmt.Println("-----------------------------")
  21. str1 := "chengzi"
  22. fmt.Printf("%s\n", str1)
  23. fmt.Printf("%8s\n", str1) // 默认左侧填充一个空格,右对齐
  24. fmt.Printf("%-8s\n", str1) // 左对齐
  25. fmt.Printf("%08s\n", str1) // 填充 0
  26. fmt.Printf("%-08s\n", str1) // 左对齐并填充 0,可以左对齐,但此时填充无法实现
  27. }

1.3 Println-输出后自动换行

其实 Println 就是在打印输出内容后添加一个换行符‘\n’。

  1. package main
  2. import "fmt"
  3. func main() {
  4. fmt.Print("Println测试")
  5. fmt.Println("-----------------------------")
  6. fmt.Print("Println测试")
  7. }

横线直接跟在了第一行,第二个输出自动进行了换行。

1.4 Fprint-将内容写入文件

Fprint 系列函数会将内容输出到一个 io.Writer 接口类型的变量 w 中,我们通常用这个函数往文件中写入内容

func Fprint(w io.Writer, a ...interface{}) (n int, err error)
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)
func Fprintln(w io.Writer, a ...interface{}) (n int, err error)

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. )
  6. func main() {
  7. fmt.Println("开始向标准输出写入内容...")
  8. fileObj, err := os.OpenFile("./log.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
  9. // O_CREATE(不存在则创建)O_WRONLY(只写)O_APPEND(追加内容)
  10. if err != nil {
  11. fmt.Println("打开文件出错,err:", err)
  12. return
  13. }
  14. content := "chengzi子"
  15. // 向打开的文件句柄中写入内容
  16. fmt.Fprintf(fileObj, "往文件中写入信息:%s\n", content)
  17. fmt.Fprintln(fileObj, "又一行信息。")
  18. fmt.Fprint(fileObj, "再一行信息。")
  19. fmt.Fprint(fileObj, "最后的信息。")
  20. fmt.Println("写入完成!")
  21. }

终端输出:

1.5 Sprint-将传入的数据以字符串形式输出

func Sprint(a ...interface{}) string
func Sprintf(format string, a ...interface{}) string
func Sprintln(a ...interface{}) string

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. func main() {
  6. s1 := fmt.Sprint("chengzi家")
  7. fmt.Println(s1)
  8. s2 := fmt.Sprintln("chengzi家")
  9. fmt.Println(s2)
  10. name := "chengzi家"
  11. age := 18
  12. s3 := fmt.Sprintf("name:%s,age:%d", name, age)
  13. fmt.Println(s3)
  14. }

1.6 Errorf-返回一个包装后的错误(errors.Wrap 简介

Errorf 函数根据 format 参数生成格式化字符并返回一个包含该字符串的错误。

func Errorf(format string, a ...interface{}) error

fmt.Errorf 的优点在于其支持格式化字符串,这使得我们可以方便地在原始错误信息中包含一些动态的数据,但是它并不会保留原始错误的堆栈跟踪信息。

Go 1.13 中引入的新特性使 fmt.Errorf 通过 %w 谓词包装错误,这样就可以保留原始错误的信息。如下:

  1. package main
  2. import (
  3. "errors"
  4. "fmt"
  5. )
  6. func main() {
  7. original_err := errors.New("original error")
  8. new_err := fmt.Errorf("an error occurred: %w", original_err)
  9. fmt.Println(new_err)
  10. }

另外,errors.Wrap 和 errors.Wrapf 是包含原始错误的堆栈跟踪信息。它们是 github.com/pkg/errors 库中的函数,用于创建新的错误。它们接受一个原始错误和一个描述信息,返回一个新的错误,结构如下:

  1. err := errors.Wrap(err, "an error occurred")
  2. err = errors.Wrapf(err, "an error occurred: %s", "additional context")

errors.Wrap 和 errors.Wrapf 的优点在于它们会保留原始错误的堆栈跟踪信息。你可以使用 errors.Cause 函数获取到原始错误,使用 fmt.Printf("%+v", err) 打印完整的错误信息和堆栈跟踪。

此外,errors.Wrapf 还支持格式化字符串,这意味着我们可以在错误信息中直接包含动态的数据。如下一个关于 errors.Wrap 和 errors.Wrapf 的示例:

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/pkg/errors"
  5. )
  6. func main() {
  7. original_err := errors.New("original error")
  8. new_err := fmt.Errorf("fmt.Errorf(): %w", original_err)
  9. fmt.Println(new_err)
  10. fmt.Println("------------------------------------------")
  11. fmt.Println("------------------------------------------")
  12. err := errors.Wrap(original_err, "errors.Wrap()")
  13. fmt.Printf("fmt.Wrap():%+v\n", err)
  14. fmt.Println("------------------------------------------")
  15. fmt.Println("------------------------------------------")
  16. err = errors.Wrapf(original_err, "errors.Wrapf(): %s", "additional context")
  17. fmt.Printf("fmt.Wrapf():%+v\n", err)
  18. }

1.6 参考:https://cloud.tencent.com/developer/article/2311646

二、输入

Go 语言 fmt 包下有 fmt.Scan、fmt.Scanf、fmt.Scanln 三个函数,可以在程序运行过程中从标准输入获取用户的输入。下面分别来介绍下。

2.1 fmt.Scan()-扫描客户端输入的文本参数值

Scan 从标准输入扫描文本,读取由空白符分割的值保存到传递给本函数的参数中,换行符或空格视为空白符

本函数返回成功扫描的数据个数和遇到的任何错误。如果读取的数据个数比提供的参数少,会返回一个错误描述原因。

func Scan(a ...interface{}) (n int, err error)

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. func main() {
  6. var (
  7. name string
  8. age int
  9. married bool
  10. )
  11. fmt.Println("请输入字符参数,回车确认输入完成:")
  12. fmt.Scan(&name, &age, &married)
  13. fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
  14. }

客户端手动输入多个字符参数时,用空格或换行分隔且可以混用,最后通过回车确认输入完成。如下是几个输入示例:

2.2 fmt.Scanf-扫描可指定格式的输入参数值

相较于 fmt.Scan(),fmt.Scanf() 可以定义输入参数的格式,只有按照指定格式输入才会识别,更加标准化。

Scanf 从标准输入扫描文本,根据 format 参数指定的格式去读取由空白符分隔的值保存到传递给本函数的参数中。

本函数返回成功扫描的数据个数和遇到的任何错误。

func Scanf(format string, a ...interface{}) (n int, err error)

  1. package main
  2. import "fmt"
  3. func main() {
  4. var (
  5. name string
  6. age int
  7. married bool
  8. )
  9. fmt.Println("请输入字符参数,回车确认输入完成:")
  10. fmt.Scanf("1:%v 2:%v 3:%v", &name, &age, &married)
  11. fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
  12. }

2.3 fmt.Scanln-最后通过回车确认输入参数值

相较于 fmt.Scan(),fmt.Scanln 不允许输入多个参数间回车,只能通过空格来分隔多个参数,最后回车确认输入。

Scanln 类似 Scan,它在遇到换行时才停止扫描。最后一个数据后面必须有换行或者到达结束位置。

本函数返回成功扫描的数据个数和遇到的任何错误。

func Scanln(a ...interface{}) (n int, err error)

  1. package main
  2. import "fmt"
  3. func main() {
  4. var (
  5. name string
  6. age int
  7. married bool
  8. )
  9. fmt.Println("请输入字符参数,回车确认输入完成:")
  10. fmt.Scanln(&name, &age, &married)
  11. fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
  12. }

2.4 bufio.NewReader-读取包括空格在内的全部输入

当想获取完整获取输入的内容,但是输入的内容可能包含空格,这种情况下可以使用 bufio 包来实现。

  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "os"
  6. "strings"
  7. )
  8. func main() {
  9. reader := bufio.NewReader(os.Stdin) // 从标准输入生成读对象
  10. fmt.Print("请输入内容:")
  11. text, _ := reader.ReadString('\n') // 读到换行
  12. text = strings.TrimSpace(text)
  13. fmt.Printf("%#v\n", text)
  14. }

2.5 Fscan 系列-根据指定字符串扫描目标值

这几个函数功能分别类似于 fmt.Scan、fmt.Scanf、fmt.Scanln 三个函数,只不过它们不是从标准输入中读取数据而是从 io.Reader 中读取数据。注意:Fscan 系列都是和 io 阻塞的有关系。

func Fscan(r io.Reader, a ...interface{}) (n int, err error)
func Fscanln(r io.Reader, a ...interface{}) (n int, err error)
func Fscanf(r io.Reader, format string, a ...interface{}) (n int, err error)

  1. package main
  2. import (
  3. "fmt"
  4. "strings"
  5. )
  6. func main() {
  7. var (
  8. name string
  9. age int
  10. married bool
  11. )
  12. reader := strings.NewReader("chengzijia 18 false")
  13. intt, _ := fmt.Fscan(reader, &name, &age, &married)
  14. fmt.Printf("扫描结果 name:%s age:%d married:%t \n", name, age, married)
  15. fmt.Printf("intt:%v\n", intt)
  16. }

2.6 Sscan 系列-根据指定字符串扫描目标值

这几个函数功能分别类似于 fmt.Scan、fmt.Scanf、fmt.Scanln 三个函数,只不过它们不是从标准输入中读取数据而是从指定字符串中读取数据。

func Sscan(str string, a ...interface{}) (n int, err error)
func Sscanln(str string, a ...interface{}) (n int, err error)
func Sscanf(str string, format string, a ...interface{}) (n int, err error)

  1. package main
  2. import "fmt"
  3. func main() {
  4. { // Sscan
  5. var name string
  6. var alphabet_count int
  7. n, err := fmt.Sscan("GFG 3", &name, &alphabet_count) // 根据空格取值
  8. if err != nil {
  9. panic(err)
  10. }
  11. fmt.Printf("%d:%s, %d\n", n, name, alphabet_count)
  12. }
  13. { // Sscanln
  14. var name string
  15. var alphabet_count int
  16. n, err := fmt.Sscanln("GFG 3", &name, &alphabet_count) // 根据空格取值
  17. if err != nil {
  18. panic(err)
  19. }
  20. fmt.Printf("n:%d, name:%s, alphabet_count:%d\n",
  21. n, name, alphabet_count)
  22. }
  23. { // Sscanf
  24. var name string
  25. var alphabet_count int
  26. n, err := fmt.Sscanf("GFG is having 3 alphabets.", // 根据模板取值
  27. "%s is having %d alphabets.", &name, &alphabet_count)
  28. if err != nil {
  29. panic(err)
  30. }
  31. fmt.Printf("%d:%s, %d\n", n, name, alphabet_count)
  32. }
  33. }

参考:http://www.topgoer.com/%E5%B8%B8%E7%94%A8%E6%A0%87%E5%87%86%E5%BA%93/fmt.html

fmt 库简介和示例【GO 基础】的更多相关文章

  1. Python3.x:第三方库简介

    Python3.x:第三方库简介 环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex ...

  2. php spl标准库简介(SPL是Standard PHP Library(PHP标准库)(直接看代码实例,特别方便)

    php spl标准库简介(SPL是Standard PHP Library(PHP标准库)(直接看代码实例,特别方便) 一.总结 直接看代码实例,特别方便易懂 thinkphp控制器利眠宁不支持(说明 ...

  3. BerkeleyDB库简介

    BerkeleyDB库简介 BerkeleyDB(简称为BDB)是一种以key-value为结构的嵌入式数据库引擎: 嵌入式:bdb提供了一系列应用程序接口(API),调用这些接口很简单,应用程序和b ...

  4. LevelDB库简介

    LevelDB库简介 一.LevelDB入门 LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读的性能很一般,也就是说,LevelDB很适合应用在查询 ...

  5. Android查缺补漏(IPC篇)-- 进程间通讯之Socket简介及示例

    本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8425736.html 进程间通讯篇系列文章目录: Android查缺补漏(IP ...

  6. IdentityServer4 中文文档 -6- (简介)示例服务器和测试

    IdentityServer4 中文文档 -6- (简介)示例服务器和测试 原文:http://docs.identityserver.io/en/release/intro/test.html 目 ...

  7. mootools常用特性和示例(基础篇1)

    网上关于mootools这个库的信息很少. 公司一些老的项目用到了mootools库,因为要维护,所以接触到了mootools. mootools(文档)官网:http://www.chinamoot ...

  8. 【网络爬虫入门02】HTTP客户端库Requests的基本原理与基础应用

    [网络爬虫入门02]HTTP客户端库Requests的基本原理与基础应用 广东职业技术学院  欧浩源 1.引言 实现网络爬虫的第一步就是要建立网络连接并向服务器或网页等网络资源发起请求.urllib是 ...

  9. Ansible - 简介和应用自动化基础实践

    installAnsible简介和应用自动化基础实践 一.引入: 1.1  如官方定义,Ansible is The simplest way to automate apps and IT infr ...

  10. MXNet深度学习库简介

    MXNet深度学习库简介 摘要: MXNet是一个深度学习库, 支持C++, Python, R, Scala, Julia, Matlab以及JavaScript等语言; 支持命令和符号编程; 可以 ...

随机推荐

  1. Python获取token数据的几种方式

    import requestsfrom urllib import requestimport re# 一.从响应头中获取token# 登录url = 'http://xxx.nhf.cn/api/b ...

  2. 疑难杂记:Chirp信号相关的参数解释

    图1 FMCW雷达信号参数 在德州仪器TI毫米波雷达中,开发板参数配置往往涉及如图1所示的信号参数. 宏观上看,信号参数包括\(ADC\)采样时间.脉冲重复周期(\(Chirp\)扫频周期)和帧时间( ...

  3. 闺蜜机 StanbyME 产品随想

    今天媳妇告诉我,现在小度这边推出一款叫 "闺蜜机"的可用移动的IPAD设备,我点开链接一看,就感觉兴趣不大,不就是一款把屏幕做的更大些的IPAD了吗? 有哪些更多创新呢?为什么会需 ...

  4. HTML5新特性之Web Storage

    Web Storage是HTML5新增的特性,能够在本地浏览器存储数据,对数据的操作很方便,最大能够存储5M. Web Storage有两种类型: SessionStorage 和 LocalStor ...

  5. js实现图片切换效果

    用js实现点击按钮,图片切换的效果: 1 <div class="box" id="box"> 2 <div class="img_ ...

  6. 【神经网络】基于GAN的生成对抗网络

    目录 [神经网络]基于GAN的生成对抗网络 随着深度学习的快速发展,神经网络逐渐成为人工智能领域的热点话题.神经网络是一种模仿人脑计算方式的算法,其通过大量数据和复杂的计算模型,能够实现复杂的任务和预 ...

  7. requests Python中最好用的网络请求工具 基础速记+最佳实践

    简介 requests 模块是写python脚本使用频率最高的模块之一.很多人写python第一个使用的模块就是requests,因为它可以做网络爬虫.不仅写爬虫方便,在日常的开发中更是少不了requ ...

  8. 基于JavaFX的扫雷游戏实现(四)——排行榜

      这期看标题已经能猜到了,主要讲的是成绩排行功能,还有对应的文件读写.那么废话不多说,让我们有请今天的主角...的设计稿:   那么主角是何方神圣呢?当然是图中的大框框--TableView.关于这 ...

  9. 【Qt 应用】模仿实现Win10的Wifi列表

    这里使用 Qt 模仿实现了 Win10 系统下的 Wifi 列表,主要用的是 QlistWidget + xml + cmd命令行 实现. 效果 下载地址 https://github.com/con ...

  10. 图技术在 LLM 下的应用:知识图谱驱动的大语言模型 Llama Index

    LLM 如火如荼地发展了大半年,各类大模型和相关框架也逐步成型,可被大家应用到业务实际中.在这个过程中,我们可能会遇到一类问题是:现有的哪些数据,如何更好地与 LLM 对接上.像是大家都在用的知识图谱 ...