目录


面试题连接

​https://studygolang.com/articles/17796​

go变量哪些是引用类型,哪些是值类型


  1. 指针:slice,map,chan,指针,interface
  2. 值类型:int,float,bool,string,array,struct

golang中new和make的区别


  1. make 仅用来分配及初始化类型为 slice、map、chan 的数据。new 可分配任意类型的数据.
  2. new 分配返回的是指针,即类型 *Type。make 返回引用,即 Type.
  3. new 分配的空间被清零, make 分配空间后,会进行初始化.

go 打印 %v %+v %#v 的区别


  1. %v 只输出所有的值
  2. %+v 先输出字段名字,再输出该字段的值
  3. %#v 先输出结构体名字值,再输出结构体(字段名字+字段的值)

package main
import "fmt"

type student struct {
id int32
name string
}

func main() {
a := &student{id: 1, name: "xiaoming"}

fmt.Printf("a=%v \n", a)
fmt.Printf("a=%+v \n", a)
fmt.Printf("a=%#v \n", a)
}

go面试题_值类型

go struct能不能比较

因为是强类型语言,所以不同类型的结构不能作比较,但是同一类型的实例值是可以比较的,实例不可以比较,因为是指针类型

go defer(for defer),先进后出,后进先出

func b() {
for i := 0; i < 4; i++ {
defer fmt.Print(i)
}
}

select可以用于什么,常用语gorotine的完美退出

golang 的 select 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作

每个case语句里必须是一个IO操作,确切的说,应该是一个面向channel的IO操作