go语言特性

1、垃圾回收

  a、内存自动回收,再也不需要开发人员管理内存

  b、开发人员专注业务实现,降低了心智负担

  c、只需要new分配内存,不需要释放

2、天然并发

  a、从语言层面支持并发,非常简单

  b、goroute,轻量级线程,创建成千上万个goroute成为可能

  c、基于CSP(Communicating Sequential Process)模型实现

高并发示例

package main

import (
"fmt"
) func test_print(a int) {
fmt.Println(a)
} func main() {
for i := 0; i < 100; i++ {
go test_print(i)
}
}

3、channel

  a、管道,类似unix/linux中的pipe

  b、多个goroute之间通过channel进行通信

  c、支持任何类型

例一  

func main()  {
var pipe chan int
pipe = make(chan int, 3)
pipe <- 1
pipe <- 2
}

例二  

package main

import "fmt"

var pipe chan int	//声明变量

func add(a int, b int) int  {
sum := a + b
pipe <- sum
return sum
} func main() {
pipe = make(chan int, 1) //创建管道
go add(2,3)
sum :=<- pipe //等待pipe里有数据才继续执行
fmt.Println("sum =",sum)
}  

例三

package main

import "fmt"

func add(a int, b int, c chan int) int  {
sum := a + b
c <- sum
return sum
} func main() {
var pipe chan int
pipe = make(chan int, 1) //创建管道
go add(2,3, pipe)
sum :=<- pipe //等待pipe里有数据才继续执行
fmt.Println("sum =",sum)
}

  

注意:

var pipe chan int
pipe = make(chan int, 3)  

上面的代码跟下面的代码意思是一样的 

pipe := make(chan int, 3)

4、多返回值

  a、一个函数返回多个值  

package main

import "fmt"

func calc(a int, b int) (int,int)  {
c := a + b
d := (a + b)/2
return c, d
} func main() {
sum, _ := calc(2,4)
fmt.Println("sum=",sum)
}

包的概念

1、和python一样,把相同功能的代码放到一个目录,称之为包

2、包可以被其它包引用

3、main包是用来生成可执行文件,每个程序只有一个main包

4、包的主要用途是提高代码的可复用性  

目录组织结构

一、文件名&关键字&标识符

1、所有go源码以.go结尾

2、标识符以字母或下划线开头,大小写敏感

3、_是特殊标识符,用来忽略结果

4、保留关键字

二、go程序的基本结构

package main

import "fmt"

func main()  {
fmt.Println("hello")
}

1、任何一个代码文件隶属于一个包

2、import关键字,引用其他包

3、golang可执行程序,package main,并且有且只有一个main入口函数

4、包中函数调用:

  a.用一个包中函数,直接调用

  b.不同包中函数,通过包名+点+函数名进行调用

5、包访问控制规则:

  a.大写意味着这个函数/变量是可导出的

  b.小写意味着这个函数/变量是私有的,

    包外部不能访问

go学习day1的更多相关文章

  1. Python学习-day1

    Mark一下,python学习. 今天一天已1.5x的速度看完了Alex老师的第一周的视频,先是4节鸡汤课,而且给了勺,讲述了python目前在世界的地位,发展趋势,以及未来的愿景. 最重要的还是写一 ...

  2. python学习——DAY1

    日期:20170113 一.个人体会: 零基础学python,是艰辛的,需要付出和坚持. 关于流程图.我最开始画的是从上到下,再从左到右,画了很多重复的内容,单线程的流程图,看起来很容易理解,但是自己 ...

  3. python全栈学习--day1

      计算机基础 CPU:中央处理器 内存:4GB,8GB,临时处理事务的地方,供给CPU数据. 硬盘:相当于电脑的数据库,存储着大量的数据,文件,电影等. 操作系统:执行者,支配所有关系 window ...

  4. python学习Day1 计算机原理编程思维

    一.学习思想:3W+1H   学什么(what).为什么学(why).用在哪里(where).怎么用(how) 学习编程语言重在代码量.代码量.代码量! 二.计算机五大组成部分,三大核心: 五大组成部 ...

  5. Python爬虫学习 - day1 - 爬取图片

    利用Python完成简单的图片爬取 最近学习到了爬虫,瞬时觉得很高大上,想取什么就取什么,感觉要上天.这里分享一个简单的爬取汽车之家文章列表的图片教程,供大家学习. 需要的知识点储备 本次爬虫脚本依赖 ...

  6. 算法学习--Day1

    为了冲刺研究生初试,我准备在课余时间捡起往日的算法.多多练习算法题目,提前准备算法的机试. 今天是4月14日,距离算法考试还有两个月的时间吧,这两个月的所学所得我就都记录在这里了.不仅仅包括算法的准备 ...

  7. HTML学习----------DAY1 第三节

    本章通过实例向您演示最常用的 HTML 标签. 提示:不要担心本章中您还没有学过的例子,您将在下面的章节中学到它们. 提示:学习 HTML 最好的方式就是边学边做实验.我们为您准备了很好的 HTML ...

  8. HTML学习----------DAY1 第二节

    使用 Notepad 或 TextEdit 来编写 HTML 可以使用专业的 HTML 编辑器来编辑 HTML: Adobe Dreamweaver Microsoft Expression Web ...

  9. HTML学习----------DAY1 第一节

    什么是 HTML? HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 (ma ...

  10. Linux学习Day1:开班第一天

    其实这篇博客应该昨天就要写完的,算是补作业吧. 昨天(2020年2月14日)是参加Linux线上培训的第一天,当天培训结束后,老师要求学员每天写一篇博客来记录自己学到的知识,于是就有了这篇博客的诞生. ...

随机推荐

  1. 20165313 《Java程序设计》第九周学习总结

    教材学习总结 1.URL类 :ava.net包中的URL类是对统一资源定位符的抽象,使用URL创建对象的应用程序称作客户端程序,客户端程序的URL对象调用InputStream openStream( ...

  2. SpringMvc和Mybatis整合总结

    1.先配置mybatis,测试读取数据库 2.自己测试数据 3.配置spring和springmvc, PS:配置web.xml,这样就不用getBean了 4.配置Controller 5.前后台交 ...

  3. Xenserver之HA实现-NFS的实现

    环境: 在vm上安装好一台Xenserver服务器,一台centos7虚拟机(用来做NFS存储,因为实现HA需要共享存储),网络连接方式为桥接模式 echo '- - -'>> /sys/ ...

  4. nginx https配置——Let's Encrypt 部署和维护

    let's encrypt Let's Encrypt 的最大贡献是它的 ACME 协议,第一份全自动服务器身份验证协议,以及配套的基础设施和客户端.这是为了解决一直以来 HTTPS TLS X.50 ...

  5. Unity3D用户手册 学习

  6. C/S架构程序多种类服务器之间实现单点登录

    (一) 在项目开发的过程中,经常会出现这样的情况:我们的产品包括很多,以QQ举例,如登陆.好友下载.群下载.网络硬盘.QQ游戏.QQ音乐等,总不能要求用户每次输入用户名.密码吧,为解决这个问题,高手提 ...

  7. babel-loader和webpack UglifyJS一起使用时console的问题

    一起使用babel-loader和webpack UglifyJS时,babel会优先处理一遍代码,编译后的代码才进入webpack进行打包和优化操作. 出处:https://www.tangshua ...

  8. hadoop 常见 命令

    一  hadoop namenode 命令 1 格式化namanode 磁盘  hadoop namenode -format 二  hadoop fs 命令     和 linux  命令 非常类似 ...

  9. linux shell创建目录、遍历子目录

    1.创建目录 代码1: #!/bin/bash#如果没有tmp_dir目录则创建static_dir="/web/fyunw.com/static"if [ ! -d $staic ...

  10. struts配置result类型为json后导致页面不能访问的错误

    错误提示为: Caused by: There is no result type defined for type 'json' mapped with name 'success'.  Did y ...