go语言编程入门
查看文档
首先先分享一个可以在本地就能查看文档的骚操作(linux系统)
1.打开命令行终端,输入godoc -http=:8000,如果想后台运行在后面加个&
2.然后打开浏览器,输入网址:localhost:8000 就可以愉快地看文档了
go语言是个什么东西我想不用我介绍了~~~大家百度吧
接下来我会一步一步地敲一个hello who?代码
下载
如果你使用的是linux系统:
sudo apt-get install golang
如果没成功:
sudo add-apt-repository ppa:gophers/go
sudo apt-get update
sudo apt-get install golang
如果你使用的是windows,mac系统:
查百度~~~
在终端执行go version
如果失败,看下面配置环境变量
为GOPATH做准备
GOPATH对Go来说是一个很重要的环境变量,在设置环境变量前,先要做一些准备工作
在你喜欢的地方建立一个文件夹,你可以随便起名,我呢是建在/home/username目录中的,文件夹的名字就叫go。在该文件夹下再建3个文件夹,名字分别为/bin,/pkg,/src。/src放源码,使用go get命令时,源码就下载在这个文件夹。/bin存放使用go install命令编译的可执行文件。/pkg存放编译后生成文件(这个目录的作用是我百度的……我也不知道该咋用,毕竟初学者0.0)至此,准备工作完成。
设置环境变量
在/etc/profile或者~/.profile中加入这几行命令
export GOROOT=/usr/lib/go
export GOPATH=/home/username/go(这里视情况而定,看自己的文件夹建在哪里啦)
export PATH=$PATH:$GOPATH/bin(添加了这个环境变量后,go install生成的可执行文件在任何位置都能执行了0.0)
然后,在终端中敲入这样的代码,让配置生效
source .profile(看你改了哪个文件,这个文件只是为特定单个用户服务的,也就是说只对一个用户起作用)
然后,在终端输入 go env
可以看到所有go相关的环境变量
敲代码!
在$GOPATH/src目录下,新建名为hello的文件夹,在该文件夹下新建hello.go的源代码文件
开始敲代码辣!!!
package main
func main() {
who := "world!"
if len(os.Args[1:]) > 0 {
who = ""
for _, arg := range os.Args[1:] {
who += " " + arg
}
}
fmt.Println("hello", who)
}
看了代码是不是觉得很难受?是不是觉得博主代码格式有毒?别着急,接着往下看。
go语言的工具链可以说是十分厉害了,其中就有一个叫goimports的工具(科普一个工具:gorun,可以把go语言当作脚本语言运行)
如果你没有安装下面贴出安装命令:
sudo apt-get install golang-golang-x-tools
然后执行以下命令:
goimports -w hello.go
-w参数作用为将结果写入文件,而不是输出在终端,来看看现在的代码
package main
import (
"fmt"
"os"
)
func main() {
who := "world!"
if len(os.Args[1:]) > 0 {
who = ""
for _, arg := range os.Args[1:] {
who += " " + arg
}
}
fmt.Println("hello", who)
}
hohoho,我发誓我没动过源文件~~~
gofmt也有将代码规范化的功能,只是goimports工具更加强大,可以自动导入需要的包(Go语言很娇气,如果包导入了没有使用或者使用到的包没导入都会导致编译失败)
运行
进入hello目录,在终端中输入go install(或者go install hello在任何目录下都生效)
进入/bin目录,你会发现多了一个名为hello的文件,在终端中输入hello
~$ hello
hello world!
输入hello Go language
~$ hello Go language
hello Go language
解析
接下来我们来解析这个程序。
首先看package main
在Go语言中,所有的代码必须从属于包,每一个Go语言程序都必须包含一个main包以及一个main()函数,main()函数是整个程序的入口,最先被执行。其实,Go语言还可能包含init()函数,先于main()执行,用于初始化包。需要注意的是,包名和函数名不会发生命名冲突。
Go语言针对的处理单元是包而非文件,在Go语言编译器看来,只要开头的包声明一样,那么它就属于同一个包,就相当于都放在一个文件里,很难理解对吧~~~就好像糖葫芦,虽然插着好多个山楂,但是每个山楂都属于这个糖葫芦中的一部分。由于有这样的特性,我们可以将包拆成任意数量的源代码文件。
import语句就不用我介绍了
Go语言不需要;(除非在同一行中输入多个语句),if和for语句也不需要(),分号由编译器自动添加。
Go语言的函数和方法由func关键字定义。
大家可能会看到:=这样怪异的表达,这个表达式完成了两个操作,声明和赋值,不需要声明变量类型不代表Go语言是弱类型语言,Go语言是强类型语言,不需要声明类型是因为Go会从初始化值中推导出类型。:=只能用在函数中,如果声明包一级变量,可以使用var关键字,var name = ???或者 var name type。而后面的who变量为什么不用:=,因为一旦使用了who:=""这样的表达,就相当于在if语句作用域内部重新声明了一个名为who的变量,生命周期为if语句内部,就是局部变量。
在for循环中,使用了range关键字,每次循环会返回键和值,值存储在arg中,_则是键。_,arg 这样的表达看起很奇怪,这是因为Go语言不允许声明变量后不使用,而我们确实用不到range返回的键,所以使用 _ 这个东西,相当于垃圾堆。
os.Args是一个string类型的切片(slice)和python差不多
---------------------
作者:葱蒜盐
来源:CSDN
原文:https://blog.csdn.net/qq_36474134/article/details/78107685
版权声明:本文为博主原创文章,转载请附上博文链接!
go语言编程入门的更多相关文章
- linux 操作系统下c语言编程入门
2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理 ...
- C语言编程入门之--第四章C语言基本数据类型
导读:C语言程序中经常涉及一些数学计算,所以要熟悉其基本的数据类型.数据类型学习起来比较枯燥,不过结合之前的内存概念,以及本节的字节概念,相信数据类型也就不难理解了.本章从二进制的基本概念开始,然 ...
- [转] linux操作系统下c语言编程入门--基础知识
点击阅读原文 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容: 1. 源程序编译 2. Makefile的编写 3. 程序库 ...
- C语言编程入门之--第一章初识程序
第一章 初识程序 导读:计算机程序无时不刻的影响着人类的生活,现代社会已经离不开程序,程序的作用如此巨大,那么程序到底是什么呢?本章主要讨论程序的概念,唤起读者对程序的兴趣,同时对C语言程序与其它语言 ...
- C语言编程入门之--第三章编写第一个C语言程序
第三章 编写第一个C语言程序 导读:一般学一门计算机语言的第一堂上机课(“上机”顾名思义,上了计算机),就是往屏幕输出“hello world”,本章也不例外. 1.1 Hello,World! 这一 ...
- 【C语言编程入门笔记】排序算法之快速排序,一文轻松掌握快排!
排序算法一直是c语言重点,各个算法适应不用的环境,同时,在面试时,排序算法也是经常被问到的.今天我们介绍下快速排序,简称就是快排. 1.快速排序思想: 快排使用 分治法 (Divide and con ...
- 【C语言编程入门笔记】C语言果然博大精深!函数还分内部和外部?
۞ 外部函数与内部函数 前面我们讲解了关于函数的调用都是针对同一个源文件中其他函数进行调用的,而在有些情况下,函数也可以对另外一个源文件中的函数进行调用.当一个程序由多个源文件组成时,根据函数是否能被 ...
- 【C语言编程入门】Do you know 函数?不知道了吧,我来告诉你!
☆ 函数 在前面我们已经讲过了一些简单的函数,如程序的主函数main().标准输出函数printf().在C语言中,大多数功能都是依靠函数来实现的.But,你知道什么是函数吗?我猜你肯定不知道. 那么 ...
- java语言编程入门
1 概述 1.1 计算机 计算机包括硬件和软件两部分.硬件包括计算机中可以看得见的物理部分.软件提供看不见的指令.这些指令控制硬件并且使得硬件完成特定的任务. 1.2 程序设计 定义:创建(或开发软件 ...
随机推荐
- ios开发之--调整UISearchBar的输入框的背景颜色
遍历UISearchBar的子视图,找到输入框坐在的view,添加背景颜色即可. 代码如下: UISearchBar *searchBar = [[UISearchBar alloc] initWit ...
- python线程池(threadpool)
一.安装 pip install threadpool 二.使用介绍 (1)引入threadpool模块 (2)定义线程函数 (3)创建线程 池threadpool.ThreadPool() (4)创 ...
- IIS6独立用户建立网站的方法,提高网站安全性
在Windows server 2003系统下,用IIS架设Web服务器,合理的为每个站点配置独立的Internet来宾账号,这样可以限制Internet 来宾账号的访问权限,只允许其可以读取和执行运 ...
- sqlite3常用指令
一.建立数据库 sqlite3.exe test.db 二.双击sqlite-3_6_16目录下的程序sqlite3.exe,即可运行 三.退出 .exit 或者 .quit 四.SQLite支持如下 ...
- 使用 PyQuery
PyQuery 用法: (1) 前面我们爬取一个网页,都是使用正则表达式来提取想要的信息,但是这种方式比较复杂,一旦有一个地方写错,就匹配不出来了,因此我们可以使用 PyQuery(2) PyQuer ...
- android R文件不能识别?
android R文件引入不了原因可能是: 1.xml有错误,导致R文件生成失败:(修改xml,并clear,然后再重新Bulid一下即可) 2.如果是图片,可能是命名有问题,查看并修改(不要以数字开 ...
- 使用__FILE__和__LINE__定位错误
#include <stdio.h> int main() { printf("this fake error is in %s on line %d\n", __FI ...
- 【Laravel5.5】 laravel5 数据库配置(MySQL)
1 进入laravel根目录. 在config目录下找到database.php文件. 显而易见这个文件是数据库相关的配置文件. 2 修改 .env 配置完database. ...
- c++多线程——锁技巧
[转自]here 编写程序不容易,编写多线程的程序更不容易.相信编写过多线程的程序都应该有这样的一个痛苦过程,什么样的情况呢?朋友们应该看一下代码就明白了, void data_process() { ...
- GitHub 在使用命令行 git push 时报错:The requested URL returned error: 403
使用 git 的命令行向 GitHub 提交的时候,报错: [Young@localhost OtherLang]$ git push origin master error: The request ...