一、第一个项目:hello world

src/day1/example1/main.go

package main

import "fmt"

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

运行命令: go run day1/example1

输出结果:hello world

解释:

package main  // 声明包名

import "fmt" // 导入fmt包, go 的标准库里面的fmt,你可以在goroot/src 看到这些包

func main(){ // main函数,一个项目有且仅有一个main函数,也就是程序入口和C语言一样
fmt.Println("hello world") // 使用fmt包的Println 函数
}

二、go的注释

package main

import "fmt"

func main(){

	num := 12
// 我是单行注释
fmt.Println(num)
/*
这里有一个num:=12 这是go 语言的变量简短声明方式
当然你也可以
var num int
num = 12
变量的下面会说 这是多行注释
*/
}

三、变量的声明方式

2.1 全局变量

src/day1/example2/main.go

package main

import "fmt"

var num int  // 全局变量在main函数外声明
var num1 int = 12 // 全局变量声明 + 赋值
//num2 := 12 // 非法的 // 优雅的变量声明
var (
name string
obj string
sex int
)
func main(){
num = 12 // 赋值
age := 26 // 简短声明 常用,main 函数内的局部变量
fmt.Println(age) for i:=0;i<5;i++{ // for 循环内的变量i 是局部的
fmt.Println(i)
}
//fmt.Println(i)
}

2.2 局部变量

src/day1/example3/main.go

package main

import "fmt"

func main(){
num1 :=22 // main 函数中的局部变量
num2 :=33
s := sum(num1,num2) // main 中的局部变量 与 sum 函数中的局部变量无关
fmt.Print(s)
} func sum(n1,n2 int)int{
s := n1 + n2 //sum函数中的局部变量
return s
}

四、go语言强大之处

src/day1/example4/main.go

package main

import (
"fmt"
"time"
) func main(){
for i:=0;i<10000;i++{
// go 关键字 可以开一个协程,且go协程是并行执行的,记住是并行哦,不是并发
// 协程 在go中应该叫 goroutine
go func(m int) {
time.Sleep(2 * time.Second) // 睡了2秒
fmt.Println(m)
}(i)
} time.Sleep(3 * time.Second)
fmt.Println("3秒内1~10000 的数必然会被全部打印出来")
}
/*
go func(m){}(i) 相当与
函数(){
执行代码
}
go 函数() //只是两步并一步了 */

五、注意

1、在go开发阶段常用go run 命令,上线后需要go build 编译
2、在go中 src中一个文件夹最好是一个项目.(上面的测试代码中我是src/day1下每一个文件夹都是一个项目,因为每一个文件夹都是main包)

混个脸熟 -- go的更多相关文章

  1. QEventLoop的全部源码也不多,混个脸熟

    /**************************************************************************** ** ** Copyright (C) 20 ...

  2. [OC] NSURLSession

    有的程序员老了,还没听过NSURLSession 有的程序员还嫩,没用过NSURLConnection 有的程序员很单纯,他只知道AFN. NSURLConnection在iOS9被宣布弃用,NSUR ...

  3. 网络第三节——NSURLSession

    有的程序员老了,还没听过NSURLSession有的程序员还嫩,没用过NSURLConnection有的程序员很单纯,他只知道AFN. NSURLConnection在iOS9被宣布弃用,NSURLS ...

  4. twobin博客样式—“蓝白之风”

    自暑假以来,囫囵吞枣一般蒙头栽入前端自学中,且不说是否窥探其道,却不自觉中提高了对网页版面设计的要求,乃至挑剔.一个设计清爽美观的网页能让读者心旷神怡,甚至没有了阅读疲劳:而一个设计粗劣嘈杂的网页实在 ...

  5. APOC 15 Years Celebration

    最近很忙,没有及时更新博客,也没有参加各种活动,唯一的活动就是接下来要讲的APOC 15 Years Celebration.不知不觉,自己也加入APOC有一年多了,正如大家所说“岁月是把杀猪刀”,我 ...

  6. jQuery-1.9.1源码分析系列(二)jQuery选择器续2——筛选

    前面分析了选择器的结构和几个解析函数,接下来分析jQuery对象的伪类选择器.这里所谓的jQuery对象的伪类选择器就是从已有的jQuery对象(元素集合)中筛选出指定的集合出来. 4.    jQu ...

  7. 没听说过这些,就不要说你懂并发了,three。

    引言 很久没有跟大家再聊聊并发了,今天LZ闲来无事,跟大家再聊聊并发.由于时间过去的有点久,因此LZ就不按照常理出牌了,只是把自己的理解记录在此,如果各位猿友觉得有所收获,就点个推荐或者留言激励下LZ ...

  8. 初探JavaScript(二)——JS如何动态操控HTML

    除去五一三天,我已经和<JavaScript Dom编程艺术>磨合了六天,第一印象很好.慢慢的,我发现这是一块排骨,除了肉还有骨头.遇到不解的地方就会多看几遍,实在不懂的先跳过,毕竟,初次 ...

  9. 使用NSURLSession

    NSURLConnection在iOS9被宣布弃用,NSURLSession从13年发展到现在,终于迎来了它独步江湖的时代.NSURLSession是苹果在iOS7后为HTTP数据传输提供的一系列接口 ...

随机推荐

  1. Ubuntu 18.04 如何固定图标到任务栏

    参考 https://blog.csdn.net/u014160286/article/details/81631863

  2. MFC CAD控制权问题

    begineditorcommand(); 隐藏对话框  把控制权交给CAD completeeditorcommand(); 完成交互返回到应用程序 canceleditorcommand CAD被 ...

  3. https webservice通讯 参考网址 http://blog.csdn.net/small____fish/article/details/8214938

    一.生成密钥库和证书可参考以下密钥生成脚本,根据实际情况做必要的修改,其中需要注意的是:服务端的密钥库参数“CN”必须与服务端的IP地址相同,否则会报错,客户端的任意. 1.生成服务器证书库keyto ...

  4. Redis Expire TTL命令

    Redis can be told that a key should only exist for a certain length of time. This is accomplished wi ...

  5. 00107_TCP通信

    1.TCP通信的概述 (1)TCP通信同UDP通信一样,都能实现两台计算机之间的通信,通信的两端都需要创建socket对象: (2)区别在于: ①UDP中只有发送端和接收端,不区分客户端与服务器端,计 ...

  6. Void 参数

    在C程序中如果在声明函数的时候如果没有任何参数那么需要将参数定义为void以此来限定此函数不可传递任何参数,如果不进行限定让参数表默认为空其意义是可以传递任何参数,这个问题的由来实际上是由于要兼容早期 ...

  7. R语言 EFA(探索性因子分析)

    EFA的目标是通过发掘隐藏在数据下的一组较少的.更为基本的无法观测的变量,来解释一组可观测变量的相关性.这些虚拟的.无法观测的变量称作因子.(每个因子被认为可解释多个观测变量间共有的方差,也叫作公共因 ...

  8. android 随手记之文件+參数上传请求

    第一步:须要两个jar的支持,稍后以下给会出下载地址. 第二步:建立一个project 以下贴出最基本的代码 package com.example.testpaizhao; import java. ...

  9. GTK经常使用控件之行编辑( GtkEntry )

    行编辑,仅仅同意输入一行内容的控件.如password输入框. 行编辑的创建: GtkWidget *gtk_entry_new(void); 返回值:行编辑指针 设置行编辑内容的最大长度: void ...

  10. 1+2+3+...+n不能用while、for、if else等实现

    问题描写叙述 求 1+2+ - +n ,要求不能使用乘除法. for . while . if . else . switch . case 等keyword以及条件推断语句. 实际意义不大,题目涉及 ...