当前位置: 首页 > news >正文

go的基本知识

本文记录了在使用go语言当中遇到的基本知识点,对于最简单的初级语法不再罗列

  1. 驼峰命名法首字母大小写对应不同访问权限:golang使用驼峰命名法,这个是基础知识。但需要注意的是golang中根据首字母的大小写来确定可以访问的权限。无论是方法名、常量、变量名还是结构体的名称,如果首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包中使用。这一点是我一开始没有注意到的。
  2. unsafe.Pointer & uintptr: golang里面 unsafe.Pointer()有些类似于void*,可以被转换成其他类型的指针且持有指针所指向的对象;uintptr是内置类型,本质上是一种整形,可以用来存储指针,但是它并不持有指针所指,也就是说其指向物会被GC.
  3. new&make, new只负责分配内存,并将内存初始化为0;make常用于 slice,map,channel的初始化。

    a. new返回的是一个指针,而make返回的是一个已经初始化过的对象的引用;

  4. 结合new&make讲一下slice:

    实际上golang是有array和slice两种数据结构的,而且array是slice的基础。其结构如下:

    

type slice struct {
    array unsafe.Pointer
    len   int
    cap   int
}

  当使用类似于:var slice = new([10]int) 的时候,我们实际上声明了一个array,它的类型是[10]int,这个10是类型的一部分。所以它是没办法append的,也就是它的长度是固定的。而对于开发人员来说,肯定希望有一个可扩展的array供我们使用,这就产生了所谓的slice。如果了解c++的vector,肯定觉得两者在思路上是差不多的,都是预先申请较多的空间并在适当的时候进行扩展。只不过这里的slice使用append函数进行了显式的管理。所以slice实际上是有两个属性的,length,capacity, 使用 make([]int,10,100) 来进行初始化。

转载于:https://www.cnblogs.com/souther-blog/p/10366800.html

相关文章:

  • extract-text-webpack-plugin用法
  • 《从0开始学Elasticsearch》—初识Elasticsearch
  • vue 打包 以及跨域问题组织
  • 深入了解以太坊
  • Python之 Virtualenv简明教程
  • dva中组件的懒加载
  • 「澳洋主数据项目」主数据促企业变革
  • phpstudy中apache的默认根目录的配置
  • 面试总结之人工智能AI(Artificial Intelligence)/ 机器学习(Machine Learning)
  • ActiveMQ之Linux下安装
  • springboot读取配置文件属性
  • PAT A1017 优先队列
  • 后端_ThinkPHP5
  • 从程序员到架构师的最佳技术成长之路
  • Javascript 原型链
  • canvas 高仿 Apple Watch 表盘
  • js面向对象
  • Linux gpio口使用方法
  • Objective-C 中关联引用的概念
  • 多线程事务回滚
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 跨域
  • 如何胜任知名企业的商业数据分析师?
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 一个SAP顾问在美国的这些年
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $ git push -u origin master 推送到远程库出错
  • (3)llvm ir转换过程
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)fock函数详解
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • *Django中的Ajax 纯js的书写样式1
  • .Net Winform开发笔记(一)
  • .NET处理HTTP请求
  • .NET中的十进制浮点类型,徐汇区网站设计
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @Autowired @Resource @Qualifier的区别
  • [1]-基于图搜索的路径规划基础
  • [20171102]视图v$session中process字段含义
  • [android]-如何在向服务器发送request时附加已保存的cookie数据
  • [Asp.net MVC]Asp.net MVC5系列——Razor语法
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [ChromeApp]指南!让你的谷歌浏览器好用十倍!
  • [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c