Go面试看这里了~(一)-基础知识点

原文地址:Go面试看这里了~(一)

1、与其它语言相比,Go有何优点?

  1. 与其它作为学术实验开始的语言不同,Go设计是务实的,各功能和语法决策旨在让程序开发更加轻松。

  2. Go针对并发进行优化,在规模上运行良好。

  3. 由于单一的标准代码格式,Go通常比其它语言有更好的可读性。

  4. 自动垃圾回收较Java、Python更有效,因为Go中垃圾回收与程序同时运行。

2、Go使用的数据类型?

  1. Method(方法)。

  2. Boolean(布尔)。

  3. Numeric(数字)。

  4. String(字符串)。

  5. Array(数组)。

  6. Slice(切片)。

  7. Struct(结构体)。

  8. Pointer(指针)。

  9. Function(引用)。

  10. Interface(接口)。

  11. Map(集合)。

  12. Channel(管道)。

3、Go包是什么?

包(pkg)为Go工作区中包含Go源文件或其它包的目录,源文件中各函数、变量和类型都存储在此链接包中,每个Go源文件都属于一个包,该包在文件顶部使用【package <packagename>】命令声明,也可用【import <packagename>】方式导入和导出包以重用导出的函数和类型。

Go标准包是fmt,包含格式化和打印功能,如Println、Printf。

4、Go支持何种形式的类型转换?

Go支持显式的类型转换,如下:

// 将整数转为浮点数i := 1 // intj := 1.1 // float64sum := i + int(j) // j被转换成int


5、什么是goroutine,如何停止它?

goroutine是函数或方法的执行,比标准线程更轻量,如要创建goroutine,可在函数声明之前添加go关键字。

通过channel向goroutine发送一个信号来停止,goroutine只能在被告知检查时响应信号,因此需在逻辑处理时,包含查验步骤,如下:

package mainfunc main() {
   
     quit := make(chan bool)  go func() {
   
       for {
   
         select {
   
         case <-quit:        return      default:        return      }    }  }()  ...  quit <- true}

6、如何在运行时检查变量类型?

类型开关是在运行时检查变量类型的最佳方式,它按值的数据类型来评估变量,每个switch至少包含一个case用作条件语句,以及default case,如没有case为真,则指向default case。

可参考如下代码:

//SliceMapStringColumnSliceInt64 获取[]map 中指定列信息 类似php array_column()//data 要获取的数据集//val 作为返回结果中值的键名//示例:res:=SliceMapStringColumnSliceInt64(data,"userid")func SliceMapStringColumnSliceInt64(data []map[string]interface{}, val string) (result []int64) {
   
     for k := range data {
   
       if vVal, valOk := data[k][val]; valOk {
   
         switch reflect.TypeOf(vVal).String() {
   
         case "string":        v, _ := strconv.Atoi(vVal.(string))        result = append(result, int64(v))      case "int":        result = append(result, int64(vVal.(int)))      case "int64":        result = append(result, vVal.(int64))      default:        continue      }    }  }  return result}

7、Go 两个接口之间可以存在什么关系?

如两接口有相同的方法列表,那就是等价的,可互相赋值,如A中方法是B的,那B可赋值给A,接口查询是否成功就需在运行时才可确认。

至此,本次分享就结束了,后期会慢慢补充。

以上仅为个人观点,不一定准确,能帮到各位那是最好的。

好啦,到这里本文就结束了,喜欢的话就来个三连击吧。

扫码关注公众号,获取更多优质内容。

  

猜你喜欢

转载自blog.csdn.net/luyaran/article/details/121300235