美文网首页
Go语言常见问题

Go语言常见问题

作者: 周山 | 来源:发表于2024-06-27 12:23 被阅读0次

变量类

  • nil 只能赋值给指针、chan、func、interface、map 或 slice 类型的变量。
    error 类型,它是一种内置接口类型,所以也能赋值nil
type error interface {
    Error() string
}
  • Go 是强类型语言
  • 在Go语言中,结构体中的map[string]string类型不能直接进行比较。map[string]string类型是一个动态的键值对集合,它的值可以是任何类型的值,因此不能直接比较。比较这两个结构体中的map[string]string值。一种方法是使用reflect包中的DeepEqual函数来比较两个map的值。
  • 相同类型的结构体才能够进行比较,结构体是否相同不但与属性类型有关,还与属性顺序相关,
  • append() 的第二个参数不能直接使用 slice,需使用 … 操作符,将一个切片追加到另一个切片上
  • 显式初始化是指在声明变量时,直接为变量分配一个初始值。这种初始化方式通常用于需要初始化值为特定值的情况。

在这个例子中,你试图将一个变量L添加到一个已存在的切片中。但是,你并没有为L分配一个初始值,所以编译器会报错。为了解决这个问题,你需要显式地为L分配一个初始值。例如:

L := []int{}
L = append(L, ...)

与显式初始化相对应的是默认初始化。默认初始化是指在声明变量时,为变量分配一个默认值。这种初始化方式通常用于需要变量有一个默认值的情况。
例如,在声明一个整数变量时,如果没有显式地指定初始值,那么它将被初始化为0:

var i int

在这个例子中,i被显式地初始化为0。如果你不显式地初始化i,那么它将被默认初始化为0。

  • 字符串连接
str := "abc" + "123"
fmt.Sprintf("abc%d", 123)

除了以上两种连接方式,还有 strings.Join()、buffer.WriteString()等。

new() 与 make() 的区别

new(T) 会为 T 类型的新值分配已置零的内存空间,并返回地址(指针),即类型为 *T的值。换句话说就是,返回一个指针,该指针指向新分配的、类型为 T 的零值。适用于值类型,如数组、结构体等。
make(T,args) 返回初始化之后的 T 类型的值,这个值并不是 T 类型的零值,也不是指针 *T,是经过初始化之后的 T 的引用。make() 只适用于 slice、map 和 channel.

编译、初始化相关操作

  • defer 的执行顺序是后进先出。当出现 panic 语句的时候,会先按照 defer 的后进先出的顺序执行,最后才会执行panic
  • init() 函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等;
  • 一个包可以出线多个 init() 函数,一个源文件也可以包含多个 init() 函数;
  • 同一个包中多个 init() 函数的执行顺序没有明确定义,但是不同包的init函数是根据包导入的依赖关系决定的(看下图);
  • init() 函数在代码中不能被显示调用、不能被引用(赋值给函数变量),否则出现编译错误;
  • 一个包被引用多次,如 A import B,C import B,A import C,B 被引用多次,但 B 包只会初始化一次;
  • 引入包,不可出现死循坏。即 A import B,B import A,这种情况编译失败;


    image.png

相关文章

  • 潍坊go语言培训

    潍坊go语言培训潍坊go语言培训潍坊go语言培训潍坊go语言培训潍坊go语言培训潍坊go语言培训潍坊go语言培训潍...

  • 初识Go语言-1

    Go语言学习路径 初识Go语言 Go语言环境搭建与IDE安装 Go语言基础语法 Go语言数据类型 Go语言变量和常...

  • Go 语言学习技巧和编程思维

    Go 语言学习技巧和编程思维 一、了解 Go 语言 了解 Go 语言背景 学习 Go 语言,首先要了解 Go 语言...

  • Go语言入坑

    GO语言基础 认识并安装GO语言开发环境 Go语言简介 Go语言是谷歌2009年发布的第二款开源编程语言 go语言...

  • Go语言之指针常见问题

    原文来自于本人公众号,“灰子学技术”。原文链接:https://mp.weixin.qq.com/s/1n_s5E...

  • go语言基础

    go语言基础 go 语言接口

  • GO语言——入门(1)

    一、初识GO语言 1.GO语言介绍 1.1 GO语言是什么 2009年11月10日,GO语言正式成为开源编程语言家...

  • 面试常见问题

    英语面试常见问题 Q: Can you sell yourself in two minutes? Go for ...

  • ByteEdu Go语言基础+视频教程

    第一节 Go语言简介 + Go语言编码规范 视频地址:Go语言简介 第二节 Go语言环境安装 ...

  • golang的helloworld

    go语言初识 go语言的变量

网友评论

      本文标题:Go语言常见问题

      本文链接:https://www.haomeiwen.com/subject/bdvxwdtx.html