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的位置
go-study的更多相关文章
- 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 ...
- RSA Study
These days I study the RSA Algorithm. It is a little complex, but not very. Also, my study has not f ...
- Machine Learning Algorithms Study Notes(3)--Learning Theory
Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 本系列文章是Andrew Ng 在斯坦福的机器学习课程 CS 22 ...
- Machine Learning Algorithms Study Notes(2)--Supervised Learning
Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 本系列文章是Andrew Ng 在斯坦福的机器学习课程 CS 22 ...
- Machine Learning Algorithms Study Notes(1)--Introduction
Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 目 录 1 Introduction 1 1.1 ...
- 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 ...
- 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 ...
- A Study of WebRTC Security
转自:http://webrtc-security.github.io/ A Study of WebRTC Security Abstract Web Real-Time Communication ...
- study topics
永远不变的东西,原理 study roadmap: 1.user space: tizen power manager => suspend/resume or runtime? android ...
- 读书笔记2013第10本:《学得少却考得好Learn More Study Less》
<学得少却考得好Learn More Study Less>这本书最早是从褪墨网站上看到的,crowncheng翻译了全文.这本书介绍了不少学习方法,非常适合在校的学生,原文的作者Scot ...
随机推荐
- python 分别用python2和python3伪装浏览器爬取网页内容
python网页抓取功能非常强大,使用urllib或者urllib2可以很轻松的抓取网页内容.但是很多时候我们要注意,可能很多网站都设置了防采集功能,不是那么轻松就能抓取到想要的内容. 今天我来分享下 ...
- gulp入门与一些基本设置
这里是gulp入门的一些操作,实现了编译sass文件.压缩.合并.添加版本号等基本功能. 友情提示,如果npm出现无法下载可以安装 cnpm.在安装完Nodejs 后 npm install cnpm ...
- JavaScript高级 面向对象(8)--浅拷贝代码实现
说明(2017.3.31): 1. 浅拷贝,只有值属性,没有引用属性. 2. 在原对象里面添加一个copy方法,返回本对象内的所有值属性. <!DOCTYPE html> <html ...
- 基于js alert confirm样式弹出框
基于js alert confirm样式弹出框.这是一款根据alert confirm优化样式的确认对话框代码. 在线预览 源码下载 实现的代码. html代码: <div id=" ...
- Qt5 can't find -LGL
一周前新建了一个有关Ubuntu QT5 的虚拟机开发环境,在官网上下载了一个完整的run包,然后编译的时候发现如下错误 can't find -LGL 解决方式: sudo apt-get inst ...
- SO_REUSEADDR的作用
服务器socketstreamtcpc 原贴地址:http://topic.csdn.net/u/20090103/16/a0414edb-b289-4c72-84da-39e155e8f4be.ht ...
- SpringMVC 之类型转换Converter详解转载
SpringMVC之类型转换Converter详解 本文转载 http://www.tuicool.com/articles/uUjaum 1.1 目录 1.1 目录 1.2 ...
- Windows Server 2008组策略安全实践(同样适用于域控制)
Windows Server 2008系统的安全功能非法强大,而它的强大之处不仅仅是新增加了一些安全功能,而且还表现在一些不起眼的传统功能上.对Windows Server 2008系统的组策略功能进 ...
- C++实现八皇后问题
C++实现八皇后问题 #include <iostream> using std::cout; using std::endl; #include <iomanip> usin ...
- WCF客户端获取服务器返回数据报错
错误信息:An error occurred while receiving the HTTP response to http://127.0.0.1/SIHIS/Infection/PubExec ...