01-Go命令与基础
什么是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命令与基础的更多相关文章
- Linux命令工具基础04 磁盘管理
Linux命令工具基础04 磁盘管理 日程磁盘管理中,我们最常用的有查看当前磁盘使用情况,查看当前目录所占大小,以及打包压缩与解压缩: 查看磁盘空间 查看磁盘空间利用大小 df -h -h: huma ...
- ansible命令应用基础
ansible命令应用基础: Usage: ansible <host-pattern> [-f forks] [-m module_name][-a args] -f ...
- SLAM+语音机器人DIY系列:(一)Linux基础——3.Linux命令行基础操作
摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...
- 3分钟学会git命令的基础使用
前言废话 下面我们就来看看gitlab服务器搭建好(http://www.cnblogs.com/JeremyWYL/p/8258368.html) 之后,git命令的基础使用,基本上就能满足我们平时 ...
- linux 命令行基础
命令行基础 一些名词 「图形界面」 「命令行」 「终端」 「shell」 「bash」 安装使用 Windws: 安装git, 打开 gitbash Linux 打开终端 Mac 打开终端 基本命令 ...
- 管理员技术(二): 访问练习用虚拟机、 命令行基础技巧 、 挂载并访问光盘设备、ls列表及文档创建、复制删除移动
一.访问练习用虚拟机 目标: 学会在教学环境中访问练习用虚拟机,主要完成以下事项: 1> 快速重置教学虚拟机环境 2> 通过“虚拟系统管理器”访问虚拟机 3> ...
- 基础01 dos命令
常见的dos命令: 盘符: 进入指定的盘下面. 操作文件夹: dir 列出当前控制 ...
- Java程序员常用的Linux命令01——linux命令基础
1.显示日期的命令date 显示日期: [root@localhost ~]# date 显示年月日: [root@localhost ~]# date '+%Y%m%d' 2.显示日历指令cal 显 ...
- 【01】SpringBoot2核心技术-基础入门
SpringBoot 2 1. SpringBoot2核心技术-基础入门 01 Spring与SpringBoot 1.Spring 能做什么 1.1 Spring的能力 微服务:将一个应用的所有功能 ...
- Linux---远程连接、命令行基础、文件及目录管理
远程连接管理Linux实践(centos) 连接小知识 IP地址:访问连接服务器,需要通过服务器的IP地址来实现,服务器的IP地址就相当于服务器的具体地址.一计算机都会有一个唯一的32位的IP地址,8 ...
随机推荐
- centOS7-配置网络地址
1.首先需求切换都root账户 # su #输入密码: 2.进入网络配置文件目录查看 ()进入该目录 # /etc/sysconfig/network-scripts ()查看目录下文件 # ll - ...
- https 与 http
HTTPS,HTTP over SSL,SSL是解决传输层安全问题的网络协议,其核心是基于公钥密码学理论实现了对服务器身份认证,数据的私密性保护以及对数据完整性的校验等功能. SSL协议在HTTP请求 ...
- True 和 False
True 和 False是Python中的关键字. 'True' 和 'False'是Python中的字符串. true 和 false 是Python中的变量名,需要提前定义.
- Erlang内存吃紧之解决思路
首先使用erlang:memory()确定是哪个部分内存吃紧,根据输出的内容,比对内存占用大小,有针对性地进行分析.在erlang系统里内存的单位为word,通过erlang:system_info( ...
- Spring读取外部属性-properties
概述 在Spring中处理外部值最简常用的方法就是外部创建name.properties文件,并在其中声明变量值,供Java进行读取.比如数据源信息配置,Java固定属性位置等.读取的方式一般由三种: ...
- BZOJ:1443: [JSOI2009]游戏Game
原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1443 反正不看题解我是完全想不出系列…… 先把棋盘黑白染色,也就是同一对角线上颜色相同,使 ...
- bzoj:1661 [Usaco2006 Nov]Big Square 巨大正方形
Description 农民 John 的牛参加了一次和农民 Bob 的牛的竞赛.他们在区域中画了一个N*N 的正方形点阵,两个农场的牛各自占据了一些点.当然不能有两头牛处于同一个点.农场的目标是用自 ...
- Codeforces Round #300(A.【字符串,多方法】,B.【思维题】,C.【贪心,数学】)
A. Cutting Banner time limit per test:2 seconds memory limit per test:256 megabytes input:standard i ...
- '<<' '|' '>>' 等位运算符 课本祥解
a<<1 相当于a*2 a>>1 相当于a/2 a<<|1 相当于a*2+1 一些算法用得到.
- SpringMVC框架学习笔记(1)——HelloWorld
搭建SpringMVC框架 1.添加jar包 jsp-api.jar servlet-api.jar jstl.jar commons-logging-1.1.1.jar spring-beans-4 ...