首页 > 编程语言 >go:(一)编程基础2:函数,结构,方法,接口

go:(一)编程基础2:函数,结构,方法,接口

时间:2023-06-25 11:56:50浏览次数:56  
标签:函数 编程 接口 interface 匿名 go 结构

引用:

第 9 课:函数 function ? | 课程列表 |《Go 编程基础(视频)》| Go 技术论坛 (learnku.com)

1.函数:

 闭包:

 defer匿名函数调用:如下例就是引用变量地址的情况,只有作为参数传入时才是值拷贝

 recover使用:

 

2.结构:

 struct定义及变量初始化:

 匿名结构及指针:

嵌套匿名结构初始化:因为需要告诉系统结构的名称,所以对于嵌套的匿名结构没法像普通的结构那样初始化,需要通过如下的方式进行:

 匿名字段:

 结构组合:默认情况下系统会给嵌入结构赋予一个相同名称的字符名。

 通过结构组合实现类似类继承的效果

同级别嵌入命名冲突的情况:

 

3.方法:

 go编译器会根据方法的定义自动识别出是指针调用还是变量调用,所以可以直接用a.Print()调用, go语言不支持函数的重载。

method value及method expression调用

结构字段的Public及Private特性是包可见:即它只对非同一个包的调用才起效。

 

4.方法:

因为USB是接口类型,所以在Disconnect函数中无法直接使用usb.name打印名称。可以通过类型判断来实现这个目的,如下:

 在go语言中有类似于其他语言中所有类的基类的类型即空 interface,即go所有类型都实现的空 interface.

 switch type:通过type关键字告诉编译器自己去猜传递进来的实际是什么类型。

 interface类型转换:只能把interface转换为超级的interface。

理解:将对象赋值给接口时会发生拷贝,该接口内部存储的是指向该拷贝的指针,通常情况即无法修改该拷贝的状态,也无法获取该指针。

理解:只有当接口存储的类型和对象都为nil时,接口才是nil

 

标签:函数,编程,接口,interface,匿名,go,结构
From: https://www.cnblogs.com/nick-qiu/p/17502127.html

相关文章

  • go 使用 unsafe 包
    go使用unsafe包进行指针操作go语言中没有直接提供指针操作,但是提供了unsafe包可以对指针进行转换// -ApointervalueofanytypecanbeconvertedtoaPointer.// -APointercanbeconvertedtoapointervalueofanytype.// -Auintptrcanbeconvertedt......
  • 【雕爷学编程】Arduino动手做(126)---GP2Y0A02YK0F红外测距模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • 如何在nginx增加健康检查接口?
    在docker中部署的nginx或者在nginx部署的nginx一般是需要一个健康检查接口的 这样的话,就可以确定容器当前的状态是否是健康的 那么,如何给nginx增加一个健康检查的接口呢? 接下来呢,我们就演示一个在nginx中如何增加健康检查的接口 1、打开nginx的配置文件(nginx.conf) ......
  • 深入Python网络编程:从基础到实践
    Python,作为一种被广泛使用的高级编程语言,拥有许多优势,其中之一就是它的网络编程能力。Python的强大网络库如socket,requests,urllib,asyncio,等等,让它在网络编程中表现优秀。本文将深入探讨Python在网络编程中的应用,包括了基础的socket编程,到高级的异步IO网络编程,以及我们如何......
  • 【已解决】GO语言开发中调用另一个库报错 cannot refer to unexported name XXXX
    packagemainimport( "fmt" "study_gos/main/kehu")//使用了go.mod//GOPATH;D:\workspace\studys\study_gos//cd/d/workspace/studys/study_gos/src//goenv-wGO111MODULE=on//gomodinitstudy_gos//gomodtidy//跳过goget失败//go......
  • GO 语言中 slice 的理解
    GO语言中 slice理解为什么说Go语言的slice是引用类型,其底层实现明明是一个结构体?slice的底层实现是一个包含三个字段的结构体:指向底层数组的指针、slice的长度和slice的容量。当我们对slice进行操作时,例如添加或删除元素,实际上是在底层数组中进行操作。由于slice......
  • 【雕爷学编程】Arduino动手做(125)---WT588D语音模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞......
  • MongoDB常用命令指南
    定义......
  • golang入门,基础语法demo(1)
    packagemainimport"fmt"funcmain(){//声明变量varaint//使用var关键字声明变量a,类型为inta=1//赋值fmt.Println(a)//类型推导//使用:=自动推导类型并声明变量b,其类型为stringb:="helloworld"fmt.Pr......
  • Mongo与MySql区别
    1.MongoDBmongoDB是一种分布式文档型数据库,具有分布式架构设计。mongoDB分布式架构包含:分片、副本和分布式查询路由1.1分片MongoDB分片技术将数据分割成多个分片(shard),每个分片存储部分数据。分片可以按照数据的范围、has值、分片键等方式进行分配。在分片集群中有一个特定的m......