专栏首页章鱼的慢慢技术路牛客网_Go语言相关练习_判断&选择题(4)

牛客网_Go语言相关练习_判断&选择题(4)

题目来源于牛客网

一、判断题

成员变量或者函数的首字母表示是否对外部可见。

switch后面的声明语句和表达式语句都是可以选择的。例如:

//可以什么都不加
switch:
    break;

错误指的是可能出现问题的地方出现了问题,比如打开一个文件时失败,这种情况在人们的意料之中;而异常指的是不应该出现问题的地方出现了问题,比如引用了空指针,这种情况在人们的意料之外。由此可知,错误是业务过程的一部分,而异常不是 。

Golang中引入error接口类型作为错误处理的标准模式,如果函数要返回错误,则返回值类型列表中肯定包含error。error处理过程类似于C语言中的错误码,可逐层返回,直到被处理。

Golang中引入两个内置函数panic和recover来触发和终止异常处理流程,同时引入关键字defer来延迟执行defer后面的函数。 一直等到包含defer语句的函数执行完毕时,延迟函数(defer后的函数)才会被执行,而不管包含defer语句的函数是通过return的正常结束,还是由于panic导致的异常结束。你可以在一个函数中执行多条defer语句,它们的执行顺序与声明顺序相反。 当程序运行时,如果遇到引用空指针、下标越界或显式调用panic函数等情况,则先触发panic函数的执行,然后调用延迟函数。调用者继续传递panic,因此该过程一直在调用栈中重复发生:函数停止执行,调用延迟执行函数等。如果一路在延迟函数中没有recover函数的调用,则会到达该携程的起点,该携程结束,然后终止其他所有携程,包括主携程(类似于C语言中的主线程,该携程ID为1)。

错误和异常从Golang机制上讲,就是error和panic的区别。很多其他语言也一样,比如C++/Java,没有error但有errno,没有panic但有throw。

Golang错误和异常是可以互相转换的:

  1. 错误转异常,比如程序逻辑上尝试请求某个URL,最多尝试三次,尝试三次的过程中请求失败是错误,尝试完第三次还不成功的话,失败就被提升为异常了。
  2. 异常转错误,比如panic触发的异常被recover恢复后,将返回值中error类型的变量进行赋值,以便上层函数继续走错误处理流程。

delete() 函数用于删除集合的元素, 参数为 map 和其对应的 key。例如:

package main

import "fmt"

func main() {
    /* 创建map */
    countryCapitalMap := map[string]string{"France": "Paris", "Italy": "Rome", "Japan": "Tokyo", "India": "New delhi"}

    fmt.Println("原始地图")

    /* 打印地图 */
    for country := range countryCapitalMap {
        fmt.Println(country, "首都是", countryCapitalMap [ country ])
    }

    /*删除元素*/ delete(countryCapitalMap, "France")
    fmt.Println("法国条目被删除")

    fmt.Println("删除元素后地图")

    /*打印地图*/
    for country := range countryCapitalMap {
        fmt.Println(country, "首都是", countryCapitalMap [ country ])
    }
}

一个文件夹下只能有一个包,可以多个.go文件,但这些文件必须属于同一个包。

Go语言取反方式和C语言不同,Go语言不支持~符号。

二、选择题

Go语言中访问成员变量的方式只有 . 号(因为->是用于通道的操作符,所以Go语言中指针不支持->操作符),并且Go语言足够智能,能够自动解引用,但智能也是有限的,只能解一次引用,指针的指针还得自己动手解引用。

当使用p的值的时候会自动转为使用指针的形式访问。

官方给出的Beego框架概览(MVC模式的构造)

A选项正确,这就是互斥锁的作用 RWMutex.RLock()时,可以随便读,多个goroutin同时读。不能写;RWMutex.Lock()时,不能读,也不能写。因此BC正确。 无论是RWMutex还是Mutex,与Lock()对应的都是Unlock(),所以D错误。

在 Go 语言中,你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型

存储在常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型

error是对象数据类型,是一个指针,不是常量,所以C错误。

三、参考资料

Go语言错误与异常处理机制

Beego简介

go web编程之-beego框架

四、小结

本次练习了解了switch语句、异常与错误的区别,delete函数对map的删除操作,const定义常量;重点关注了指针、同步锁的内容,同时get到了一个新的基于Go语言的web框架-Beego。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux操作系统配置Go语言编程环境

    之前一直在windows下写Go,现在工作环境切换至Linux下,因此写下此文,记录安装Go环境的过程。

    Zoctopus
  • Go语言相关练习_选择题(2)

    go语言中字符串是UTF-8编码并存储的,它语言不定长的字节,所以它不支持下标操作,因为没一个下标操作代表的是固定长度的字节,所以不能对字符串中某个字符单独赋值...

    Zoctopus
  • Go指南练习_斐波纳契闭包

    Zoctopus
  • golang学习笔记2:基本结构与数据类型

    除了以上介绍的这些关键字,Go 语言还有 36 个预定义标识符,其中包含了基本类型的名称和一些基本的内置函数。

    JKXQJ
  • (二十四)golang--错误处理

    (3)这几个异常的使用场景可以这么简单描述,Go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后进行处理;

    绝命生
  • [linux][elf]ELF格式分析与常用工具以及不常见问题

    前言: ELF只linux是最常用的可执行文件格式,这里简单分析一下ELF格式,介绍几个常用命令,并分享几个不常见的问题。 分析: 1,dynamicall...

    皮振伟
  • 【DB笔试面试508】如何选择最优的容灾方案?

    在构建容灾系统时,首先考虑的是结合实际情况选择合理的数据复制技术。在选择合理的数据复制技术时主要考虑以下因素:

    小麦苗DBA宝典
  • 新开学/开年三大件:最潮科技新品,为你带来开学好心情

    假期再长总是要开学的,新开学三件套了解一下?不仅能够丰富大学的学(娱)习(乐)生活,还能在朋友面前小小炫耀一番,就像朱一旦不经意露出的劳力士手表,富有中透露着一...

    VRPinea
  • Dubbo爆出严重漏洞!可导致网站被控制、数据泄露!附解决方案

    近日检测到Apache Dubbo官方发布了CVE-2019-17564漏洞通告,360灵腾安全实验室判断漏洞等级为高,利用难度低,威胁程度高,影响面大。建议使...

    业余草
  • I/O中断原理

    在Windows内核原理-同步IO与异步IO和《高性能网络通讯原理》两篇文章中,都出现了中断这两个字。本篇文章会对中断操作的原理进行说明。

    用户6786055

扫码关注云+社区

领取腾讯云代金券