当前位置: 首页 > article >正文

【Golang 面试题】每日 3 题(六)

✍个人博客:Pandaconda-CSDN博客
📣专栏地址:http://t.csdnimg.cn/UWz06
📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

16. Printf(),Sprintf(),FprintF() 都是格式化输出,有什么不同?

在 Go 语言中,Printf()、Sprintf() 和 FprintF() 都是用于格式化输出的函数,但它们有一些不同之处,具体如下:

  1. Printf()

Printf() 是最常用的格式化输出函数,它将格式化后的字符串输出到标准输出流(一般是终端窗口)。Printf() 的
语法如下:

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

其中,format 表示要输出的格式化字符串,a …interface{} 表示要格式化的参数列表,可以是任意类型的参数。
Printf() 函数会根据格式化字符串中的格式说明符将参数格式化为指定格式,并输出到标准输出流中。

  1. Sprintf()

Sprintf() 与 Printf() 的作用类似,不同的是,它将格式化后的字符串输出到一个字符串中,而不是标准输出流。Sprintf() 的语法如下:

Sprintf(format string, a ...interface{}) string

其中,format 和 a …interface{} 的含义与 Printf() 相同,但 Sprintf() 返回一个字符串,而不是将格式化后的字符串输出到标准输出流中。

  1. FprintF()

FprintF() 与 Printf() 的作用也类似,不同的是,它将格式化后的字符串输出到指定的文件中,而不是标准输出流。FprintF() 的语法如下:

FprintF(w io.Writer, format string, a ...interface{}) (n int, err error)

其中,w 表示要输出的文件,可以是 os.Stdout、os.Stderr 或其他实现了 io.Writer 接口的类型。format 和 a …interface{} 的含义与 Printf() 相同。FprintF() 会将格式化后的字符串输出到指定的文件中。

综上所述,Printf()、Sprintf() 和 FprintF() 都是格式化输出函数,它们的作用有所不同,但都可以通过格式说明符将参数格式化为指定格式。需要根据具体的需求选择不同的函数来使用。

17. Golang 的参数传递、引用类型

在 Golang 中,函数调用时参数传递可以分为值传递和引用传递。

值传递:将参数的值复制一份,然后将复制的值传递给函数,函数对参数的修改不会影响到原始的值。常见的值类型如 int、float、bool 等都是值类型,它们的传递都是值传递。

引用传递:将参数的地址复制一份,然后将复制的地址传递给函数,函数对参数的修改会影响到原始的值。常见的引用类型如 Slice、Map、Channel、指针等都是引用类型,它们的传递都是引用传递。

需要注意的是,在 Golang 中数组虽然是引用类型,但是它的传递却是值传递。这是因为 Golang 的数组长度是固定的,数组的值复制时会将整个数组的元素都复制一遍,因此传递数组时的开销较大,而且数组的长度也不可变,因此将数组的地址复制一份也无法修改原数组的长度,所以 Golang 采用了值传递的方式。

总之,对于值类型的参数,使用值传递即可;对于引用类型的参数,使用引用传递可以避免大量数据的复制,提高程序的效率。同时,在使用引用类型的参数时,需要注意并发访问的问题。

18. Go 语言当中值传递如何运用?

值传递是指函数参数传递时,传递的是值的拷贝,而不是原始值的引用。在函数中修改参数的值并不会影响原始值。在 Go 语言中,基本数据类型、数组和结构体等类型都是以值的形式传递的。

示例代码:

func main() {
    a := 10
    fmt.Println("Before calling function, a is:", a)
    changeValue(a)
    fmt.Println("After calling function, a is:", a)
}

func changeValue(n int) {
    n = 20
    fmt.Println("In function, n is:", n)
}

输出结果:

Before calling function, a is: 10
In function, n is: 20
After calling function, a is: 10

可以看到,虽然在函数 changeValue() 中修改了参数 n 的值,但原始值 a 并未被修改。


http://www.kler.cn/a/453187.html

相关文章:

  • NIO(New IO)和BIO(Blocking IO)的区别
  • 【VScode】第三方GPT编程工具-CodeMoss安装教程
  • UE5 崩溃问题汇总!!!
  • git设置项目远程仓库指向github的一个仓库
  • IntelliJ IDEA 远程调试
  • C语言项目 天天酷跑(上篇)
  • 学习C++:书写hello world
  • 什么是微分
  • OCR实践-Table-Transformer
  • 【人工智能】用Python实现情感分析:从简单词典到深度学习方法的演进
  • 15 break和continue
  • Dockerfile的用法
  • 基于OpenCV和Python的人脸识别系统_django
  • Python------Pandas的数据结构
  • vue搭建简易前端
  • springboot497基于java国产动漫网站设计和实现(论文+源码)_kaic
  • Jenkins入门使用
  • AI+“国补”推动,市场高度关注相关供应链企业
  • 硬件设计:RS485电平标准
  • uniapp安装使用tailwindcss
  • 从虚拟到现实:AI与AR/VR技术如何改变体验经济?
  • elementPlus消息组件多按钮案例
  • [实战]推流服务SRS安装
  • lxml 解析xml\html
  • Day50 图论part01
  • Virtualbox硬盘扩容