Golang内置类型和函数及接口、Init函数和main函数

1. 内置类型

1.1. 值类型:

    boolint(32 or 64), int8, int16, int32, int64uint(32 or 64), uint8(byte), uint16, uint32, uint64float32, float64stringcomplex64, complex128array    -- 固定长度的数组

1.2. 引用类型:(指针类型)

    slice   -- 序列数组(最常用)map     -- 映射chan    -- 管道

2. 内置函数

Go 语言拥有一些不需要进行导入操作就可以使用的内置函数。它们有时可以针对不同的类型进行操作,例如:len、cap 和 append,或必须用于系统级的操作,例如:panic。因此,它们需要直接获得编译器的支持。

    append          -- 用来追加元素到数组、slice中,返回修改后的数组、sliceclose           -- 主要用来关闭channeldelete            -- 从map中删除key对应的valuepanic            -- 停止常规的goroutine  (panic和recover:用来做错误处理)recover         -- 允许程序定义goroutine的panic动作imag            -- 返回complex的实部   (complex、real imag:用于创建和操作复数)real            -- 返回complex的虚部make            -- 用来分配内存,返回Type本身(只能应用于slice, map, channel)new                -- 用来分配内存,主要用来分配值类型,比如int、struct。返回指向Type的指针cap                -- capacity是容量的意思,用于返回某个类型的最大容量(只能用于切片和 map)copy            -- 用于复制和连接slice,返回复制的数目len                -- 来求长度,比如string、array、slice、map、channel ,返回长度print、println     -- 底层打印函数,在部署环境中建议使用 fmt 包

3. 内置接口error

    type error interface { //只要实现了Error()函数,返回值为String的都实现了err接口Error()    String}

4. init函数

go语言中init函数用于包(package)的初始化,该函数是go语言的一个重要特性。

有下面的特征:

    1 init函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等2 每个包可以拥有多个init函数3 包的每个源文件也可以拥有多个init函数4 同一个包中多个init函数的执行顺序go语言没有明确的定义(说明)5 不同包的init函数按照包导入的依赖关系决定该初始化函数的执行顺序6 init函数不能被其他函数调用,而是在main函数执行之前,自动被调用

5. main函数

    Go语言程序的默认入口函数(主函数):func main()函数体用{}一对括号包裹。func main(){//函数体}

6. init函数和main函数的异同

    相同点:两个函数在定义时不能有任何的参数和返回值,且Go程序自动调用。不同点:init可以应用于任意包中,且可以重复定义多个。main函数只能用于main包中,且只能定义一个。

两个函数的执行顺序:

对同一个go文件的init()调用顺序是从上到下的。

对同一个package中不同文件是按文件名字符串比较“从小到大”顺序调用各文件中的init()函数。

对于不同的package,如果不相互依赖的话,按照main包中"先import的后调用"的顺序调用其包中的init(),如果package存在依赖,则先调用最早被依赖的package中的init(),最后调用main函数。

如果init函数中使用了println()或者print()你会发现在执行过程中这两个不会按照你想象中的顺序执行。这两个函数官方只推荐在测试环境中使用,对于正式环境不要使用。

参考文章:

https://www.fansimao.com/928483.html

https://www.fansimao.com/928492.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/646661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序呼叫设备

一、业务说明 微信最近推出了手机微信呼叫设备的VOIP插件 和 Linux SDK内部体验版本,之前公司小程序开发过设备呼叫微信的功能,设备如何呼叫微信可以看之前的博客:微信小程序音视频通话(for硬件)组件的使用-CSDN博客。…

【医学图像数据增强】切割-拼接(CS-DA)

切割-拼接CS-DA CS-DA 核心思想自然图像和医学图像之间的关键差异CS-DA 步骤确定增强后的数据数量 代码复现 CS-DA 核心思想 论文链接:https://arxiv.org/ftp/arxiv/papers/2210/2210.09099.pdf 大多数用于医学分割的数据增强技术最初是在自然图像上开发的&#x…

flink中的重启策略

背景 在flink宣布作业失败的时候往往会进行重试,本文就来记录下flink中的几种重启策略 flink失败重启策略 1.固定延时重启 这种重启策略会重启固定的次数,每两次重启之间会间隔固定的时间间隔,如果失败次数达到了配置的次数限制&#xff0…

如何实现动态代理(俩种方式)

文章目录 基于接口的动态代理:基于类的动态代理: 基于接口的动态代理: 通过Java的反射机制来动态创建代理对象,代理对象实现了一个或多个接口。 Java提供了java.lang.reflect包中的Proxy类和InvocationHandler接口来实现基于接口…

数据类型(中)

数据类型(中) 1.列表(list)1.1 定义1.2 独有功能1.3 公共功能1.4 转换1.5. 其他1.5.1 嵌套 1.6 列表阶段作业 2.元组2.1 定义2.2 独有功能2.3 公共功能2.4 转换2.5 其他2.5.1 嵌套 总结作业 各位小伙伴想要博客相关资料的话关注公…

常见算法思想:回溯法

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 学习必须往深处挖&…

E - Rainbow Strings

如果字符串中的每个字母都不同,则将字符串定义为彩虹字符串。空字符串也被认为是彩虹字符串。 给定一个小写字母字符串,计算彩虹字符串的不同子序列的数量。如果一个子序列中包含索引,但另一个子序列不包含索引,则即使生成的字符串…

ORM-06-jooq 入门介绍

拓展阅读 The jdbc pool for java.(java 手写 jdbc 数据库连接池实现) The simple mybatis.(手写简易版 mybatis) JOOQ JOOQ 可以通过数据库直接生成 java 代码,通过 flent-api 进行数据库操作。 SQL builder JOOQ 非常的灵活和强大。你可…

【XR806开发板试用】编译中的几个问题以及hello跑起来

首先我们先看https://xr806.docs.aw-ol.com/ 该文档部分不适应 当前最新gitee 如果没有repo工具,可通过下面的git命令获取repo。 git clone https://gerrit-googlesource.lug.ustc.edu.cn/git-repo下载代码 没有使用ssh://方式 过于麻烦 mkdir xr806_openharmony…

加载服务端发送的模型文件_unity开发进阶

加载服务端发送的模型文件 前言一、服务端搭建二、unity请求文件三、加载模型结语 前言 之前我们学习制作的都是离线状态下的东西,今天我们学习制作一个小demo。 内容就是我们用unity请求后台,接受后台发送过来的模型,然后将模型加载到场景中…

0125-2-Vue深入学习1—mustache模板引擎原理

[mustache] 是 “胡子”的意思&#xff0c;因为它的嵌入标记 {{ }} 旋转过来很像[胡子]&#xff0c;Vue中的 {{ }} 语法也引用了mustache&#xff0c;这也是我深入学习的目的。 1、原始js方式使 数据 变为视图 <ul id"list"></ul><script>var arr …

k8s---安全机制

k8s的安全机制&#xff0c;分布式集群管理工具&#xff0c;就是容器编排。安全机制的核心&#xff1a;APIserver。为整个集群内部通信的中介&#xff0c;也是外控控制的入口。所有的机制都是围绕apiserver来进行设计&#xff1a; 请求api资源&#xff1a; 1、认证 2、鉴权 …

快速上手的AI工具-文心一言绘本创作

前言 大家好晚上好&#xff0c;现在AI技术的发展&#xff0c;它已经渗透到我们生活的各个层面。对于普通人来说&#xff0c;理解并有效利用AI技术不仅能增强个人竞争力&#xff0c;还能在日常生活中带来便利。无论是提高工作效率&#xff0c;还是优化日常任务&#xff0c;AI工具…

js计算皮尔逊相关系数

代码如下; let XGX {correlationCoefficient(pA, pB) {let covXY -pA * pBlet varX pA * (1-pA) let varY (1-pB)* pBlet res covXY / (Math.sqrt(varX*varY, 2))return res},correlation(x,y){x[0.3,50.2,99.5,199.3,299,398];y[0.1,50,99.9,200,300,400];// 计算均值con…

Linux操作系统概念

绪论​&#xff1a; “心灵纯洁的人&#xff0c;生活充满甜蜜和喜悦。——列夫托尔斯泰”&#xff0c;本章的主要内容是介绍了硬件的组成结构冯诺依曼体系结构以及操作系统的概念和操作系统的作用&#xff0c;本章的内容主要是理论他起到承上启下的作用只有理解了操作系统的运行…

rs3568芯片,hdmi输出 无声音

rs3568芯片&#xff0c;hdmi in输入 hdmi输出 无声音&#xff0c;如果高手请联系。谢谢&#xff01;

【硅谷甄选】stylelint

配置 stylelint stylelint 为 css 的 lint 工具。可格式化 css 代码&#xff0c;检查 css 语法错误与不合理的写法&#xff0c;指定 css 书写顺序等。 以下使用 scss 作为预处理器为例&#xff0c;安装以下依赖&#xff1a; pnpm add sass sass-loader stylelint postcss po…

SAP创建资产号码和分配资产价值

文章目录 1 Creat new asset2 View asset3 Create old asset4 Transfer value5 Summary 1 Creat new asset T-code(AS01) 2 View asset T-CODE : AS03 3 Create old asset T-code(as91) 4 Transfer value T-code(ABLDT) If there is following information a…

python sqlite3 线程池封装

1. 封装 sqlite3 1.1. 依赖包引入 # -*- coding: utf-8 -*- #import os import sys import datetime import loggingimport sqlite31.2. 封装类 class SqliteTool(object):#def __init__(self, host, port, user, password, database):def __init__(self, host, database):s…

Typora + PicGo + GitHub搭建图床

Typora PicGo GitHub搭建图床 1. Typora下载破解 这一步自行百度 2. PicGo下载 PicGo is Here | PicGo 自行下载安即可 3. GitHub仓库设置 gitHub注册略过&#xff0c;如果不能访问请科学上网 创建仓库 生成访问token 点击右上角头像 -> setting -> 点击左边最…