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的位置

go-study的更多相关文章

  1. Improve Your Study Habits

    1.Plan your time carefully. Make a list of your weekly tasks.Then make a schedule or chart of your t ...

  2. RSA Study

    These days I study the RSA Algorithm. It is a little complex, but not very. Also, my study has not f ...

  3. Machine Learning Algorithms Study Notes(3)--Learning Theory

    Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 本系列文章是Andrew Ng 在斯坦福的机器学习课程 CS 22 ...

  4. Machine Learning Algorithms Study Notes(2)--Supervised Learning

    Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 本系列文章是Andrew Ng 在斯坦福的机器学习课程 CS 22 ...

  5. Machine Learning Algorithms Study Notes(1)--Introduction

    Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 目 录 1    Introduction    1 1.1    ...

  6. jar tvf study.war jar命令查看war/jar包的内容

    jar tvf study.war 0 Thu Oct 20 14:01:18 CST 2016 META-INF/ 137 Thu Oct 20 14:01:16 CST 2016 META-INF ...

  7. Mongo DB Study: first face with mongo DB

    Mongo DB Study: first face with mongo DB 1.  study methods: 1.  Translate: I am the mongo DB organiz ...

  8. A Study of WebRTC Security

    转自:http://webrtc-security.github.io/ A Study of WebRTC Security Abstract Web Real-Time Communication ...

  9. study topics

    永远不变的东西,原理 study roadmap: 1.user space: tizen power manager => suspend/resume or runtime? android ...

  10. 读书笔记2013第10本:《学得少却考得好Learn More Study Less》

    <学得少却考得好Learn More Study Less>这本书最早是从褪墨网站上看到的,crowncheng翻译了全文.这本书介绍了不少学习方法,非常适合在校的学生,原文的作者Scot ...

随机推荐

  1. VS15 Visual Assist X破解

    Visual Assist X是一款非常好的Microsoft Visual Studio插件,支持C/C++,C#,ASP,Visual Basic,Java和HTML等语言,Visual Assi ...

  2. C++11 随机数

    C++11带来诸多特性,random就是其一. 随机数由生成器和分布器结合产生 生成器generator:能够产生离散的等可能分布数值(需要种子,不然每次生存的随机数都一样) 分布器distribut ...

  3. feginclient demo

    1.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...

  4. WCF寄宿到Windows Service

    WCF寄宿到Windows Service[1] 2014-06-14 WCF寄宿到Windows Service参考 WCF寄宿到Windows Service 返回 在前面创建一个简单的WCF程序 ...

  5. python学习笔记(22)--漫画生成html最终版

    说明(2017.3.14): 1. 在主文件夹生成一个main.html作为目录 2. 在每个子文件夹生成一个index.html作为看图网页 3. 通过python批量生成html网页,js配合进行 ...

  6. 推荐10款纯css3实现的实用按钮

    在2014年的双11即将来临之季,爱编程小编为大家整理10款纯css3实现的按钮.希望这对坚守在前端的码农们有所帮助.亲,如果你有好的资源也可在本文留言,让从事编码的程序员们抱团.工作更轻松. No1 ...

  7. 【C#/WPF】调节图像的HSL(色相Hue、饱和度Saturation、明亮度Lightness)

    先说概念: HSL是一种描述颜色的方式,其他颜色描述方式还有大家熟悉的RGB值.HSL三个字母分别表示图像的Hue色相.Saturation饱和度.Lightness明亮度. 需求: 制作一个面板,包 ...

  8. Java并发(二)多线程的好处

    即使编写多线程程序具有挑战性,但它仍在使用中,是因为它可以带来如下的好处: 更好的资源利用 在某些场景下程序的设计会更简单 提升程序的响应性 更好的资源利用 假设一个应用会从本地文件系统中读取和处理文 ...

  9. BusyBox init工作流程

    linux启动完成后,运行由Busybox产生的init进程. /sbin/init是系统启动的第一个用户进程,pid=1.init的工作是根据/etc/inittab脚本来进行系统的初始化工作,关机 ...

  10. [转]eclipse导入V7包出现错误解决办法

    android下v4    v7   v21等包是android系统的扩展支持包,就想windows的系统补丁一个道理. android的扩展包主要是用来兼容低版本的,比如android3.0以后出现 ...