go-study

package (包)

  • 一个目录下面所有的.go文件的包名必须相同. 包名一般和目录名相同(是约定, 不是强制), 包名都小写
  • main包是一个特殊的包名, 在main包中, 必须包含func main()函数
  • 导入包(import)的时候, 使用的是包所在目录的路径, 路径中不用包含包的名字, 在使用包的时候,直接用包名(如 fmt.Println)

可见性规则

当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 private )。

声明语句

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

函数

main 和 init 函数既没有参数,也没有返回类型

占位符  https://studygolang.com/articles/2644

  • %t  : 布尔类型
  • %p : 指针, 表示为十六进制,并加上前导的0x
  • %s : 字符串
  • %c : 字符
  • %b , %o , %d : 二进制 , 八进制 , 十进制
  • %x , %X : 十六进制小写 , 十六进制大写
  • %T : 变量类型
  • %v : 根据数据类型输出对应格式的值
  • %% : 百分号
  • %q : 用引号包含字符串
  • %5s , %-5s : 在格式化数字时,可以在动词的“%”后面使用一个数字来控制结果图形的宽度和精度。默认为右对齐, 在数字前面加上"-"可以左对齐
  • %06d : 使用0而不是空格填充, 对于数值类型会把填充的0放在正负号后面
  • %3.3f : 浮点数的宽度和精度

内置函数

  • len : 返回某个类型的长度或数量
  • cap
  • new
  • make
  • new 和 make的区别  https://studygolang.com/articles/1890

数组

数组的长度和类型一起构成了数组的类型, 比如 var array 

实现接口 https://www.jianshu.com/p/d87c69ac6ce7

当涉及到我们该怎么让我们的类型实现接口时,Go 语言是特别的一个。Go 语言不需要我们显式的实现类型的接口。如果一个接口里的所有方法都被我们的类型实现了,那么我们就说该类型实现了该接口。

数据类型

  • 布尔类型不能接受其他类型的赋值,不支持自动或强制的类型转换
  • int和int32在Go语言里被认为是两种不同的类型

可赋值(这里不能叫类型转换, 用可赋值表达更准确些)

A value x is assignable to a variable of type T ("x is assignable to T") in any of these cases:
在一下这些情况值x可以赋值给类型为T的变量(x可以赋值给T)

1. x's type is identical to T.
1. x的类型和T的类型相同
2. x's type V and T have identical underlying types and at least one of V or T is not a named type.
2. x和T具有相同的底层类型, 并且x和T至少有一个是非命名类型
3. T is an interface type and x implements T.
3. T是接口类型,x实现了T
4. x is a bidirectional channel value, T is a channel type, x's type V and T have identical element types, and at least one of V or T is not a named type.
4. x是双向的chan类型的值, T是chan类型, x和T具有相同的元素类型, 并且x和T至少有一个是非命名类型
5. x is the predeclared identifier nil and T is a pointer, function, slice, map, channel, or interface type.
5. x的值为nil, 并且T是指针、函数、切片、映射、通道或接口类型
6. x is an untyped constant representable by a value of type T.
6. x是一个没有指定类型的常量, 可以赋值给类型T(这里要遵循第一条原则, 但数字类型除外)

 

整型数据类型及取值范围

类型字节范围
int8 1 -128 ~ 127
uint8 1 0 ~ 255
int16 2 -32 768 ~ 32 767
uint16 2 0 ~ 65 535
int32 4 -2 147 483 648 ~ 2 147 483 647
uint32 4 0 ~ 4 294 967 295
int64 8 -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807
uint64 8 0 ~ 18 446 744 073 709 551 615
int平台相关  平台相关
uint平台相关 平台相关 
uintptr 同指针在32位平台下为4字节,64位平台下为8字节

 

goroutine/channel

  • goroutine是Go语言中的轻量级线程实现,由Go运行时(runtime)管理
  • 函数调用前加上go关键字,这次调用就会在一个新的goroutine中并发执行。当被调用的函数返回时,这个goroutine也自动结束了。需要注意的是,如果这个函数有返回值,那么这个返回值会被丢弃。
  • 在没有使用channel时,  Go程序从初始化main package并执行main()函数开始,当main()函数返回时,程序退出,且程序并不等待其他goroutine(非主goroutine)结束。
  • 在向channel中写入数据前, 对channel的读操作是阻塞的, 读channel的位置就是同步goroutine的位置

 

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

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

相关文章

什么是系统安全状态

指系统能按某种顺序如(P1,P2,...,Pn),来为每个进程分配所需要的资源,直至最大需求,使每个进程都可以顺序完成。若系统不存在这样一个安全序列,则称系统处于不安全状态。

SQL零基础学习笔记(一)

真的不知道我写了这么多不同的的学习笔记又没用。。开始SQL零基础学习笔记 百度百科:SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数…

WPF 列表虚拟化时的滚动方式

ListBox的滚动方式 分为像素滚动和列表项滚动 通过ListBox的附加属性ScrollViewer.CanContentScroll来设置。因此ListBox的默认模板中&#xff0c;含有ScrollViewer&#xff0c;ScrollViewer下存放列表内容 <ScrollViewer FocusVisualStyle"{x:Null}"><Item…

python爬虫文献综述_基于Python下的爬虫综述及应用

98 Internet Application 互联网 应用 引言&#xff1a;如今&#xff0c;大数据已经进入我们的各个领域&#xff0c;我们的工作及应用越来越需要获取大量的数据。我们可以想象在一张蜘蛛网上沿着我们所需的方向爬取猎物(数据)的感觉。实际上爬虫就是通过人为的模拟浏览器行为&…

HelloWorld新手常见问题

1.显示错误&#xff1a; HelloWorld.java:1: 错误: 写入HelloWorld时出错: C:\HelloWorld.class public class HelloWorld { ^ 1 个错误 解决方法&#xff1a; 将文件转移至D盘&#xff0c;然后编译即可。不要放在C盘&#xff01; 2.显示错误&#xff1a; 错误: 找不…

浅谈HTTPS以及Fiddler抓取HTTPS协议

原文 浅谈HTTPS以及Fiddler抓取HTTPS协议 最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作&#xff0c;碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议&#xff0c;关键的登录请求等HTTPS协议都没有捕捉到&#xff0c;所以想让Fiddler能够同时抓取到HTTPS和HT…

关于.c和.h 和定义变量的问题

最初调试的时候是因为有个错误在wavplay.h文件中 于是我跳到了recorderl.h中:从图中看到引用了main.h 出现这个问题的具体原因还是不太清楚: 不过我任务是因为: wavplay.h中定义了 __WaveHeader 变量 在main.h文件中引用了wavplay.h 而在wavplay.h中试图引用main.h里的 __Wa…

halcon中面到面的距离_halcon学习笔记——(8)由标定板得到测量平面位姿-阿里云开发者社区...

如图&#xff1a;由标定板位姿获取测量板位姿1.pose_to_hom_mat3d( : : Pose : HomMat3D)把三维位姿转化为齐次变换矩阵2.hom_mat3d_translate_local( : : HomMat3D, Tx, Ty, Tz : HomMat3DTranslate)相对于新坐标系的平移变换/ 1 0 0 \ / Tx \HomMat3DTranslate HomMat3D *…

进程同步与互斥的区别

并发进程的执行会产生相互制约的关系&#xff1a;一种是进程之间竞争使用临界资源&#xff0c;只能让他们逐个使用&#xff0c;这种现象称为互斥&#xff0c;是一种竞争关系。另一种是进程之间协同完成任务&#xff0c;在关键点上等待另一进程发来的消息&#xff0c;以便协同一…

《软件调试分析技术》学习笔记

《软件调试分析技术》学习笔记&#xff08;一&#xff09; 今天开始写写一些心得体验。 《软件调试分析技术》是好友Monster的处女作品。作为一直以的好伙伴&#xff0c;他是我看着长大的&#xff0c;(*^__^*) 嘻嘻……之所以有今天这样的成绩&#xff0c;是与他的努力和天赋…

new Date()时间

var myDate new Date(); myDate.toLocaleDateString()&#xff1b;可以获取当前日期myDate.toLocaleTimeString(); 可以获取当前时间扩展&#xff1a;myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1970-????)myDate.getMonth(); //获…

什么是对等网络

对等网也称工作组。在对等网络中&#xff0c;计算机的数量通常不会超过10台。所以对等网络相对比较简单。在对等网络中&#xff0c;对等网上各台计算机的有相同的功能&#xff0c;无主从之分&#xff0c;网上任一节台计算机既可以作为网络服务器&#xff0c;其资源为其它计算机…

python初中必背语法_一些python语法的合集

贴几道自己做过的py题防止忘了&#xff0c;好像包含的语法还挺多的洛谷1018nn,mminput().split( )oint(input())nint(nn);mint(mm)a[[]];c[[]]for i in range (1,43):a.append([]);c.append([])for i in range (1,43):for j in range (1,43):a[i].append(0),c[i].append(0)b[]f…

微信 {errcode:48001,errmsg:api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]}

{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"} 声明&#xff1a;是已认证的服务号 这个问题已解决&#xff01;&#xff01; 前置说明 网页授权获取用户基本信息&#xff1a;两种 scope 域 https://open.w…

解决ubuntu首次安装Mysql之后,首次登录出现ERROR 1698 (28000): Access denied for user 'root'@'localhost'的方法

解决步骤&#xff1a; 1.打开终端&#xff0c;输入sudo vi /etc/mysql/debian.cnf 打开/etc/mysql/debian.cnf文件&#xff0c;显示如下&#xff1a; 2.mysql -udebian-sys-maint -p 打开mysql 输入密码为上图中password字段 3.修改root密码 ALTER USER rootlocalhost IDEN…

六十万的成长_我的EA策略分析和实现

曾经看过一个故事&#xff1a;在流水线上需要检测面包盒子是不是空的&#xff0c;科技人员使用各种红外线等等高科技&#xff0c;达到了目的&#xff1b;有一个工人用一台风扇就解决了这个问题......其实解决问题可以很简单&#xff0c;只要能实现目标&#xff0c;过程越简单越…

流量控制和拥塞控制

流量控制是用于控制调制解调器与计算机之间的数据流&#xff0c;具有防止因为计算机和调制解调器之间通信处理速度的不匹配而引起的数据丢失。通常有硬件流量控制&#xff08;RTS/CTS&#xff09;和软件流量&#xff08;XON/XOFF&#xff09;控制。 拥塞现象是指到达通…

内聚的极限: 软件开发的不确定性原理

高内聚是有极限的. 当代码在一个维度上高度内聚的时候, 在其它维度上是发散的. -- 代码内聚设计的不确定性原理 大家都知道量子力学的不确定性原理: 在微观世界里, 有几对物理量不能同时精确的测定, 包括速度与位置, 以及能量与时间. 比如当我们精确的测定一个粒子的速度使其误…

python获取window共享目录列表_利用Python获取DICOM RTstructure勾画列表

在《利用Python打开DICOM CT文件》一文中&#xff0c;我们利用pydicom.dcmread()读取了CT图像。本文中我们将修改load_scan()函数来读取RTstructure文件并获取勾画列表1. 打开Jupyter notebook&#xff0c;导入需要的科学包import numpy as npimport mathimport pydicomimport …