初识go

一、什么是go

  Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。

  罗伯特·格瑞史莫,罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设计Go,,稍后Ian Lance Taylor、Russ Cox加入项目。Go是基于Inferno操作系统所开发的。Go于2009年11月正式宣布推出,成为开放源代码项目,并在LinuxMac OS X平台上进行了实现,后来追加了Windows系统下的实现。在2016年,Go被软件评价公司TIOBE 选为“TIOBE 2016 年最佳语言”。 目前,Go每半年发布一个二级版本(即从a.x升级到a.y)。 

二、go的特点

  1、自动垃圾回收
  2、丰富的内置类型
  3、函数多返回值
  4、匿名函数和闭包
  5、错误处理
  5、类型和接口:Go语言的类型定义直接沿袭了C语言的结构(struct),不支持继承和重载,而只是支持了最基本的类型组合功能;
  6、并发编程:引入goroutine概念
  7、UTF-8支持

三、go的目录结构

-- bin  (存放编译后生成的可执行文件)
-- pkg  (存放编译后生成的包文件)
-- src  (存放项目源码,src 可以存放多个项目源码)

四、go 的基本命令

go run [包名] : 直接运行程序,常在开发时使用
go help [command] : 查看帮助文档
go build [-o 输出名] [-i] [编译标记] [带有main的包] [-race 开启静态检测]   # 测试编译,检查是否有编译错误
go get [包路径] :  获取远程包(需提前安装git)
go install 编译包文件并编译整个程序
go test:运行测试文件
go doc 查看文档

五、简单项目讲解

go-test 已在GOPATH 中

test.go

package test

import "fmt"

var Num int

func init(){
    Num =100
}

func Call(name string) {
    fmt.Println(name, "this is calculation")
}

main.go

package main
// 上面 是包名,表明我们是在main 包中

// 导入需使用的包
import (
"day1/test"
"fmt"
)

// 这是 main 函数 ,一个项目只能有一个main 函数

func main() {
fmt.Println("hello world")
test.Call("jmz")
fmt.Println(test.Num)
/*

结果:
hello world
jmz this is calculation
100

*/
}

 使用 go 命令编译一下,执行hello.exe(编译时要在go-test 目录下)

cd go-test
go build -o bin/hello.exe day1/main

/*
说明:
bin/hello.exe 生成的路径 执行程序名 $gopath/bin/hello
day1/main 是文件夹路径 $gopath/src/day/main
day1/main 包中含有且只有一个main 函数
*/
hello.exe

结果

详解

1、第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。

2、下一行 import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。

3、下一行 func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。

4"//"  是单行注释 '/**/' 是多行注释

5、fmt.Println(...)  将字符串输入至终端,并在字符串的末尾添加n

6、var Num int  变量的声明方式  var 关键字 Num 开头大写的变量 int 表明Num 是int 类型

7、每条语句后面都无需添加";" 结束,因为在编译过程中编译器已将添加好了
原文地址:https://www.cnblogs.com/xiaobaiskill/p/10299546.html