golang开发笔记No.4

问题:下面这段代码输出

package main

import "fmt"

type MyInt1 int
type MyInt2 = int

func main() {
    var i int = 0
    var i1 MyInt1 = i
    var i2 MyInt2 = i
    fmt.Println(i1,i2)
}}


结果:
cannot use i (type int) as type MyInt1 in assignment。
参考答案及解析:
这道题考的是类型别名与类型定义的区别。
第 5 行代码是基于类型 int 创建了新类型 MyInt1,第 6 行代码是创建了 int 的类型别名 MyInt2,注意类型别名的定义时 = 。
所以,第 10 行代码相当于是将 int 类型的变量赋值给 MyInt1 类型的变量,Go 是强类型语言,编译当然不通过;而 MyInt2 只是 int 的别名,
本质上还是 int,可以赋值。第 10 行代码的赋值可以使用强制类型转化 var i1 MyInt1 = MyInt1(i).

关于字符串连接,下面语法正确的是?

  • A. str := 'abc' + '123'
  • B. str := "abc" + "123"
  • C. str := '123' + "abc"
  • D. fmt.Sprintf("abc%d", 123)

参考答案及解析:BD。知识点:字符串连接。除了以上两种连接方式,还有 strings.Join()、buffer.WriteString()等。

package main
 
import "strings"
 
func main(){
	//1
    a := "hahaha"
	b := "hehehe"
	c := strings.Join([]string{a,b},",")
	println(c)
    
    //2
    var buffer bytes.Buffer
    buffer.WriteString("this")
    buffer.WriteString(" is")
    buffer.WriteString(" a")
    buffer.WriteString(" test")
    fmt.Println(buffer.String())

}
1.hahaha,hehehe
2.输出为:this is a test

猜你喜欢

转载自blog.csdn.net/m0_38004619/article/details/101695074