首页 > 其他分享 >基础入门

基础入门

时间:2024-01-23 20:56:53浏览次数:29  
标签:defer 入门 基础 strconv 切片 类型 整型 字符串

命令行参数

func main() {
    fmt.Println(strings.Join(os.Args[1:], " "))
}

os.Args变量是一个字符串(string)的切片(slice),os.Args的第一个元素:os.Args[0],是命令本身的名字;其它的元素则是程序启动时传给它的参数。

类型和数据结构

Go语言主要有四种类型的声明语句:var、const、type和func,分别对应变量、常量、类型和函数实体对象的声明。

基础数据结构

  • 整型:int8、int16、int32、int64四种有符号整数类型和uint8、uint16、uint32、uint64四种无符号整数类型(uintptr:无符号整型,用于存放一个指针;rune:int32等价类型,方便进行字符操作)
  • 浮点数:float32和float64
  • 复数:complex64和complex128
  • 布尔型:true和false
  • 字符串

字符串常用操作

字符串是由字符组成的数组,C 语言中的字符串使用字符数组char[]表示。在运行时都会使用reflect.StringHeader表示。

type StringHeader struct {
    Data uintptr    // 指向字节数组的指针
    Len  int        // 数组的大小
}

可以读取字符串内容,如fmt.Sprintf("%c", s[1]),但是不能像s[1] = a这样修改字符串。

标准库中有四个包对字符串处理尤为重要:bytes、strings、strconv和unicode包。

  • strings包提供了如字符串的查询、替换、比较、截断、拆分和合并等功能函数
  • bytes包针对[]byte类型提供了很多类似strings的功能函数
  • strconv包提供了布尔型、整型数、浮点数和对应字符串的相互转换
  • unicode包提供了IsDigit、IsLetter、IsUpper和IsLower等功能

整型转字符串

x := 123
y := fmt.Sprintf("%d", x)
z := strconv.Itoa(x)

字符串转整型

x, err := strconv.Atoi("123")
y, err := strconv.ParseInt("123", 10, 64)

复合数据类型

  • 数组:由固定长度的特定类型元素组成的序列
  • 切片:变长序列,在运行时切片可以由如下的reflect.SliceHeader结构体表示
type SliceHeader struct {
    Data uintptr    // 指向数组的指针
    Len  int        // 当前切片的长度
    Cap  int        // 当前切片的长度
}
  • Map:key/value哈希表
  • 结构体:由零个或多个任意类型的值聚合成的实体

常用关键字

defer

defer关键字传入的函数会在函数返回之前运行,底层是一个后进先出的栈。Go1.14引入了开放编码方式实现defer,编译器会将defer函数直接在当前函数内展开,并在返回语句的末尾判断是否执行defer调用。开放编码方式尽量在栈上而不是堆上分配内存空间,可以有效避免运行时内存损耗。

make和new

make:初始化内置的数据结构(切片、哈希表和 Channel)

new:根据传入的类型分配一片内存空间并返回指向这片内存空间的指针

参考

Golang修养之路

Go 语言设计与实现

标签:defer,入门,基础,strconv,切片,类型,整型,字符串
From: https://www.cnblogs.com/gxyan/p/17983402

相关文章

  • 哈希学习笔记+杂题(基础2 字符串哈希)
    哈希杂题前言:骗分神器,我之前竟然没有学。一、哈希学习笔记+杂题(基础2字符串哈希)相关题单:戳我1.哈希(hash)简介哈希算法(HashAlgorithm),又称散列算法。有两种用法,第一种就是将一字符串转化成任意进制的数,目的是方便存储。第二种就是将大范围的数映射成小范围的数,目的也是方便存......
  • Camera基础(Linux之V4L2驱动框架)
    摄像头的基本工作原理如图所示,一个景象的反射光被镜头所捕捉(镜头的光圈可以调节进光量,马达用来调节对焦),最终将聚焦好的图像精准对焦到图片传感器上边(色彩滤波会产生三基色),光信号转化为数字信号,通过模数转换最终得到原始码流数据。问题:那我们可以直接使用这个包含图像信息和颜色信......
  • Jenkins+基础系列16:番外篇--Manage and Assign Roles 角色权限控制插件
    摘自:https://blog.csdn.net/yangj507/article/details/1080832721、下载插件:Role-basedAuthorizationStrategy,安装成功后,可以重启下 2、菜单查看 3、菜单简介 4、ManageRoles设置5、AssignRoles设置 6、视图名称和job名称设置由于我们采用了表达式匹配......
  • kettle从入门到精通 第三十三课 再谈 kettle 表输出 分区/分片
    1、之前第九章有讲过kettle表输出步骤,里面有简单的提到过表输出步骤里面的表分区设置,这里详细介绍下。 表分区数据:选择此选项可根据“分区”字段中指定的日期字段的值将数据拆分到多个表中。选择此选项后,数据将插入到表中,这些表的名称遵循<targettable>_<dateformat>模式,如t......
  • 软件自动化测试入门攻略
    软件测试自动化是什么?测试人员需要学习那些内容?学习后如何在项目中落地?零基础测试人员如何快速在企业落地自动化测试,为什么弯路这么多,究竟该如何破局?针对这些困扰许多测试工程师的问题,笔者基于对自动化测试的多年深耕、对软件测试自动化的丰富实战和持续研究,编著了软件自动化测试......
  • Alpine基础环境配置
    Alpine基础环境配置版本的选择,默认使用standard,extend版本可做便携版本使用。用户手册:AlpineUserHandbook官方WIKI:AlpineLinuxWIKI安装安装的实际逻辑是通过setup-alpine​脚本去调用其他功能的脚本进行配置,可以通过vi查看脚本。如果某个部分安装失败,可退出后单独......
  • mysql分析sql语句基础工具 -- explain
    分析sql语句explainexplain(sql语句)G;分析结果:idsql语句编号如果是连接查询,表之间是平等关系,编号相同;如果有子查询,编号递增。select——type查询类型table查询针对的表 该值可能是实际的表名或者临时表,derived表示form子查询,null表示无须查表possible_key可能用到的索引ke......
  • JAVA面向对象基础
    运行javac[main文件]-d[bin文件目录]java-cp[bin文件目录][main文件类名]对象把业务概括为一个由字段,方法描述的代码实体。类与实例类是对象实例的模板,实例时对象类运行时实际产生的具体实体。字段可以由java基础数据类型或者对象作为字段。方法可能是构造方法,也......
  • 【图像处理基础】灰度图raw8格式转NV12格式
    前言 转换原理*RGB转YUV-NV12:Y=0.299R+0.587G+0.114BU=-0.1687R-0.3313G+0.5B+128V=0.5R-0.4187G-0.0813B+128*YUV-NV12转RGBR=Y+1.402(V-128)#1.4075G=Y-0.34414(U-128)-0.71414(V-128)B=Y+1.772(U-......
  • rocketmq--基础配置
    Springboot项目application.properties的基础配置server.port=8091#RocketMQNameServer地址rocketmq.name-server=公网IP:9876#生产者组名称rocketmq.producer.group=my-rocket-mq-grouprocketmq.producer.access-key=rocketmq2rocketmq.producer.secret-key=123456......