您的位置:首页 > 科技 > 能源 > 老板办公室装修效果图_工业品电商平台排行榜_市场调研的步骤_百度公司招聘官网最新招聘

老板办公室装修效果图_工业品电商平台排行榜_市场调研的步骤_百度公司招聘官网最新招聘

2025/3/1 1:36:23 来源:https://blog.csdn.net/Newin2020/article/details/144736309  浏览:    关键词:老板办公室装修效果图_工业品电商平台排行榜_市场调研的步骤_百度公司招聘官网最新招聘
老板办公室装修效果图_工业品电商平台排行榜_市场调研的步骤_百度公司招聘官网最新招聘

✍个人博客: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 := 10fmt.Println("Before calling function, a is:", a)changeValue(a)fmt.Println("After calling function, a is:", a)
}func changeValue(n int) {n = 20fmt.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 并未被修改。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com