Go学习每日一问(8)-string&nil
文章目录
每次学习并整理一个Golang的知识点,每天进步一点点。今天学习下字符串连接和nil的知识点🤔。
代码片段
观察如下代码片段,写出你认为的正确答案?
-
关于字符串连接,下面语法正确的是:()
- A.
str := 'abc' + '123'
- B.
str := "abc" + "123"
- C.
str := '123' + "abc"
- D.
fmt.Sprintf("abc%d", 123)
- A.
-
下面赋值正确的是:()
- A.
var x = nil
- B.
var x interface{} = nil
- C.
var x string = nil
- D.
var x error = nil
- A.
思考后看答案…
答疑解惑
参考答案:
1.BD
在Go中,用双引号来表示字符串。单引号、双引号和反引号的区别如下:
- 单引号表示rune类型,rune 等同于int32;且单引号只能包含一个字符,例如’a’,程序会输出97表示字符a的ascii码。
- 双引号用来表示字符串string,其实质是一个byte类型的数组;
- 反引号用来创建原生的字符串字面量,它可以由多行组成,但不支持任何转义序列;
A选项中,单引号中包含多个字符,会提示报错:Invalid character literal (more than one character)
;
C选项中,把两个不同类型的变量进行拼接时,就会报错。
D选项,是正确的字符串连接。除了以上两种连接方式,还有strings.Join()、buffer.WriteString()等。
2.BD
知识点:nil 值。nil只能赋值给指针、chan、func、interface、map或slice 类型的变量。D选项的error类型,是一种内置接口类型,也是正确的。
你做对了吗?😊
其他相关答案,欢迎在评论区留言补充!
拓展阅读
使用原始字符串字面值,避免转义
Go 支持使用原始字符串字面值,也就是**反引号(” ` “)*来表示原生字符串,在需要转义的场景下,我们可以使用这种方案来替换。
可以跨越多行并包含引号。使用这些字符串可以避免更难阅读的手工转义的字符串。例如下面示例2的写法优于示例1:
示例1:
|
|
示例2:
|
|
字符串拼接–builder 拼接
为了改进buffer拼接的性能,从go 1.10 版本开始,增加了一个builder类型,用于提升字符串拼接的性能。它的使用和buffer几乎一样。
|
|
输出结果:s2是: abcd,efgh
下期提问
- (多选)关于init函数,下面说法正确的是()
- A. 一个包中,可以包含多个 init 函数;
- B. 程序编译时,先执行依赖包的 init 函数,再执行 main 包内的 init 函数;
- C. main 包中,不能有 init 函数;
- D. init 函数可以被其他函数调用;
2.观察下面代码片段,判断能否编译通过?如果可以,写出输出结果?
|
|
答案及解析将在下期文章中给出,欢迎大家在评论区留言,独乐乐不如众乐乐,交流学习,互相进步。
欢迎转发和评论。更多优质原创文章,欢迎关注微信公众号“IYue爱月”或扫描下方二维码: