什么是Go?

Go是一门并发支持、垃圾回收的编译型系统编程语言,旨在创造一门具有在静态编译语言的高性能和动态的高效开之间拥有良好平衡点的一门编程语言。

Go的主要特点有哪些?

  • 类型安全和内存安全
  • 以非常直观和极低代价的方案实现高并发
  • 高效的垃圾回收机制
  • 快速编译(同时解决C语言中)
  • 为多核计算机提供性能提升的方案
  • UTF-8编码支持

Go存在的价值是什么?

Go在谷歌: 以软件工程为目的语言设计

Go环境变量

[chentiangang@Mac.local ~]$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"      #交叉编译的架构
GOHOSTOS="darwin"           #交叉编译的系统
GOOS="darwin"
GOPATH="/Users/chentiangang/go" #工作目录
GORACE=""
GOROOT="/usr/local/go"          #安装目录
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/ht/mz9p76vd0mq673ysl1hm0p7h0000gp/T/go-build286554756=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
PKG_CONFIG="pkg-config"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"

Go命令

go get  #获取远程包(需要提前安装git或hg)
go run  #直接运行程序
go build    #测试编译,检查是否有编译错误
go fmt  #格式化源码(部分IDE在保存时自动调用)
go install  #编译包文件并编译整个程序
go test #运行测试文件
godoc -http :8080   #查看文档

Go语言的Hello,world

package main

import (
    "fmt"
)

func main() {
    fmt.Printf("Hello, world.")
}

Go内置关键字(25个均为小写)

break       default     func        interface   select
case        defer       go      map     struct
chan        else            goto        package switch
const   fallthrough if      range   type
continue    for         import  return  var

Go注释方法

  • // 单行注释
  • /* */ 多行注释

Go程序的一般结构: basic_structure.go

  • Go程序是通过package来组织的(与python类似)
  • 只有package名称为main的包可以包含main函数
  • 一个可执行程序有且仅有一个main包
  • 通过import关键字来进行常量的定义
  • 通过在函数体外部使用var关键字来进行全局变量的声明与赋值
  • 通过type关键字来进行结构(struct)或接口(interface)的声明
  • 通过func关键字来进行函数的声明
// 当前程序的包名
package main

//导入其它的包
import "fmt"

// 常量的定义
const PI = 3.14

// 全局变量的声明与赋值
var name = "gopher"

// 一般类型声明
type newType int

// 结构的声明
type gopher struct{}

// 接口的声明
type golang interface{}

// 由 main函数作为程序入口点启动
func main() {
    Println("Hello world! 你好,世界!")
}

Go导入package的方式

或者这样:

全局变量

一般类型

  • 导入包之后,就可以使用格式
  • 如果导入包之后未调用其中的函数或者类型将会报出编译错误:

    imported and not used: "io"

    package别名的使用

  • 当使用第三方包时,包名可能会非常接近或者相同,此时就可以使用别名来进行区别和调用

省略调用

  • 不建议使用,易混淆
  • 不可以和别名同时使用

可见性规则

  • Go语言中,使用大小写来决定该常量、变量、类型、接口、结构或函数是否可以被外部包调用:

    根据约定,函数名首字母小写即为private
  • 函数名首字母大写即为public

01-Go命令与基础的更多相关文章

  1. Linux命令工具基础04 磁盘管理

    Linux命令工具基础04 磁盘管理 日程磁盘管理中,我们最常用的有查看当前磁盘使用情况,查看当前目录所占大小,以及打包压缩与解压缩: 查看磁盘空间 查看磁盘空间利用大小 df -h -h: huma ...

  2. ansible命令应用基础

    ansible命令应用基础:    Usage: ansible <host-pattern> [-f forks] [-m module_name][-a args]        -f ...

  3. SLAM+语音机器人DIY系列:(一)Linux基础——3.Linux命令行基础操作

    摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...

  4. 3分钟学会git命令的基础使用

    前言废话 下面我们就来看看gitlab服务器搭建好(http://www.cnblogs.com/JeremyWYL/p/8258368.html) 之后,git命令的基础使用,基本上就能满足我们平时 ...

  5. linux 命令行基础

    命令行基础 一些名词 「图形界面」 「命令行」 「终端」 「shell」 「bash」 安装使用 Windws: 安装git, 打开 gitbash Linux 打开终端 Mac 打开终端 基本命令 ...

  6. 管理员技术(二): 访问练习用虚拟机、 命令行基础技巧 、 挂载并访问光盘设备、ls列表及文档创建、复制删除移动

    一.访问练习用虚拟机 目标: 学会在教学环境中访问练习用虚拟机,主要完成以下事项: 1> 快速重置教学虚拟机环境       2> 通过“虚拟系统管理器”访问虚拟机       3> ...

  7. 基础01 dos命令

    常见的dos命令: 盘符:        进入指定的盘下面. 操作文件夹:                   dir                                   列出当前控制 ...

  8. Java程序员常用的Linux命令01——linux命令基础

    1.显示日期的命令date 显示日期: [root@localhost ~]# date 显示年月日: [root@localhost ~]# date '+%Y%m%d' 2.显示日历指令cal 显 ...

  9. 【01】SpringBoot2核心技术-基础入门

    SpringBoot 2 1. SpringBoot2核心技术-基础入门 01 Spring与SpringBoot 1.Spring 能做什么 1.1 Spring的能力 微服务:将一个应用的所有功能 ...

  10. Linux---远程连接、命令行基础、文件及目录管理

    远程连接管理Linux实践(centos) 连接小知识 IP地址:访问连接服务器,需要通过服务器的IP地址来实现,服务器的IP地址就相当于服务器的具体地址.一计算机都会有一个唯一的32位的IP地址,8 ...

随机推荐

  1. 微信跳一跳辅助Demo

    [原创] 前几天没事干看别人一直在玩微信上线的那一个跳一跳小游戏,玩着玩着老是掉下去,闲着没事呗 就想了想做一个辅助程序的呗.不过先做的手动版的.自动版的有点麻烦.就不发了.用的Java写的,也就一个 ...

  2. Django----->inclusion_tag的使用

    一种比较普遍的tag类型是只是渲染其它模块显示下内容,这样的类型叫做Inclusion Tag. 常用的模板标签是通过渲染 其他 模板显示数据的. 比如说,Django的后台管理界面,它使用了自定义的 ...

  3. IntelliJ IDEA 17和Maven构建javaWeb项目

    前言 电脑又断电了,眼看着写好的东西就没有了,这是第二次犯这个错误了.很难受呀!还是回到正题吧,我们来使用IDEA和Maven构建一个JavaWeb项目 软件环境: IDEA:2017.2.1 JDK ...

  4. codechef [snackdown2017 Onsite Final] AND Graph

    传送门 题解给出了一个很强势的dp: i<K $$dp[i][len]*Fib[len+2-(t[i]==1)] -> dp[i+1][len]$$ $$dp[i][len]*Fib[le ...

  5. 51 Nod 1005 大数加法【Java大数乱搞,python大数乱搞】

    1005 大数加法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出2个大整数A,B,计算A+B的结果. Input 第1行:大数A 第2行:大数B (A,B的长度  ...

  6. BZOJ2726: [SDOI2012]任务安排

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2726 倒着做,前面的点对后面的点都是有贡献的. f[i]=min(f[j]+cost[i]*( ...

  7. c语言中标识符的作用域

    1.代码块作用域(block scope) 位于一对花括号之间的所有语句称为一个代码块,在代码块的开始位置声明的标识符具有代码块作用域,表示它们可以被这个代码中的所有语句访问.函数定义的形式参数在函数 ...

  8. Java入门篇(五)——Java的字符串/String类

    前面在举例时有出现过String的例子,当时肯定有一部分朋友不知道这个是做什么用的.其实String类是Java中一个比较特殊的类,字符串即String类,它不是Java的基本数据类型之一,但可以像基 ...

  9. HDU 5914 Triangle(打表——斐波那契数的应用)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5914 Problem Description Mr. Frog has n sticks, whos ...

  10. 任务驱动 搭建SSM开发环境

    本篇主要阐述(IntelliJ IDEA + Maven + Spring + Spring MVC + Mybatis)搭建 为什么想要搭建ssm? 近期正好自己有一个小的点子要实现,恰好这学期开了 ...