Go 语言是一种让代码分享更容易的编程语言

export PATH=$PATH:/usr/local/go/bin
  • 设置GOPATH(go语言的workspace,默认是$HOME/go,如果是其他的目录则需要修改。)
  • 测试1,执行go run hello.go, ~/go/src/hello/hello.go文件内容如下:
package main

import "fmt"

func main() {
fmt.Println("Hello, World!")
}
  • 测试2,进入~/go/src/hello目录执行go build得到一个hello(目录的名字)可执行文件,执行./hello进行测试;
  • GoLand下载

Go代码的一些注意事项

  • {不能单独放在一行
  • 一行代表一个语句结束,不建议将多个语句写在一行然后使用“;”人为区分
  • //单行注释,/* 多行注释1 */
  • 声明变量的一般形式是使用 var 关键字:var identifier type 或 var identifier1, identifier2 type,例如:var b bool = true,如果没有初始化,则变量默认为零值
  • 变量声明方式
    • 第一种,指定变量类型,如果没有初始化,则变量默认为零值。var v_name v_type
    • 第二种,根据值自行判定变量类型。var v_name = value
    • 第三种,省略 var, 注意 := 左侧如果没有声明新的变量,就产生编译错误。v_name := value
      • 只能被用在函数体内,而不可以用于全局变量的声明与赋值
      • :=初始化声明一个新变量,=仅仅是赋值
  • 数据类型
    • 布尔型
    • 数字类型
    • 字符串类型
    • 派生类型
  • 值类型&引用类型
    • 值类型

      • 所有像 int、float、bool 和 string 这些基本类型都属于值类型,使用这些类型的变量直接指向存在内存中的值
      • 可以通过 &i 来获取变量 i 的内存地址
      • 值类型的变量的值存储在栈中
    • 引用类型
      • 一个引用类型的变量 r1 存储的是 r1 的值所在的内存地址(数字),或内存地址中第一个字所在的位置
      • 当使用赋值语句 r2 = r1 时,只有引用(地址)被复制。如果 r1 的值被改变了,r2 也会受到影响。
  • 交换变量值:a, b = b, a
  • 空白标识符 _ 也被用于抛弃值,如值 5 在:_, b = 5, 7 中被抛弃
  • 常量(在程序运行时,不会被修改的量)
    • 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型
    • const identifier [type] = value,例如const b string = "abc"const b = "abc"const a, b, c = 1, false, "str" //多重赋值
  • 指针变量 * 和地址值 & 的区别:指针变量保存的是一个地址值,会分配独立的内存来存储一个整型数字。当变量前面有 * 标识时,才等同于 & 的用法,否则会直接输出一个整型数字。
func main() {
var a int = 4
var ptr *int
ptr = &a
println("a的值为", a); // 4
println("*ptr为", *ptr); // 4
println("ptr为", ptr); // 824633794744
}
  • Go 没有三目运算符,所以不支持 ?: 形式的条件判断
  • 函数
func function_name( [parameter list] ) [return_types] {
函数体
}
  • 变量

    • 局部变量
    • 全局变量
    • 形式参数
  • 数组声明:var variable_name [SIZE] variable_type,例如:var balance [10] float32
  • 数据初始化:var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0} 或 var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
  • 并发
    • go 函数名( 参数列表 )
    • channel
ch <- v    // 把 v 发送到通道 ch
v := <-ch // 从 ch 接收数据
// 并把值赋给 v

Go安装配置和《菜鸟教程之Go语言教程》学习笔记的更多相关文章

  1. Nginx安装配置PHP(FastCGI)环境的教程

    这篇是Nginx安装配置PHP(FastCGI)环境的教程.Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用. 一.什么是 FastCGI F ...

  2. Linux环境CentOS6.9安装配置Elasticsearch6.2.2最全详细教程

    Linux环境CentOS6.9安装配置Elasticsearch6.2.2最全详细教程 前言 第一步:下载Elasticsearch6.2.2 第二步:创建应用程序目录 第四步:创建Elastics ...

  3. mysql5.6免安装配置(菜鸟版)

    mysql5.6免安装配置 MySQL5.6.13安装步骤(Windows7 32位) 1. 下载MySQL Community Server 5.6.13 2. 解压MySQL压缩包 将以下载的My ...

  4. CentOS 6.0 安装配置rails 2.3.11 + redmine 1.2.1 笔记

    没想到安装过程这么曲折,gem安装时下载经常是不成功的,无耐只好把.gem文件下载回来再本地安装,加上radmine 1.2.1对各组件的版本了也比较挑剔,中间走了不少弯路,折腾了二天时间,终于摸清路 ...

  5. 安装配置oracle11gR2、client、plsql developer及学习

    本文是一个目录,以后会持续更新 1,安装oracle11gR2 https://www.cnblogs.com/suterfo/p/10659208.html 2,安装oracle client及配置 ...

  6. Ubuntu16.04下安装配置numpy,scipy,matplotlibm,pandas 以及sklearn+深度学习tensorflow配置+Keras2.0.6(非Anaconda环境)

    1.ubuntu镜像源准备(防止下载过慢): 参考博文:http://www.cnblogs.com/top5/archive/2009/10/07/1578815.html 步骤如下: 首先,备份一 ...

  7. hive介绍、安装配置、表操作基础知识适合小白学习

    1.hive概述 Apache Hive数据仓库软件有助于使用SQL读取,编写和管理驻留在分布式存储中的大型数据集.可以将结构投影到已存储的数据中.提供了命令行工具和JDBC驱动以将用户连接到Hive ...

  8. Libra教程之:move语言的特点和例子

    文章目录 move语言的特点 资源优先 灵活性 安全性 可验证性 Move语句初探 点对点支付交易脚本 Currency Module move语言的特点 Libra的目标是打造一个全球话的金融和货币 ...

  9. Sass和compass 安装 和配合grunt实时显示 [Sass和compass学习笔记]

    demo 下载http://vdisk.weibo.com/s/DOlfkrAWjkF/1401192855 为什么要学习Sass和compass ?提高站独立和代码产品化的绝密武器,尤其是程序化cs ...

随机推荐

  1. Java垃圾回收_过程观察

    这是今天看JVM垃圾回收的时候做的实验观察. 使用工具:Java VisualVM.VisualVM GC插件 观察应用:Tomcat容器中的Web服务 1. Java VisualVM 在tomca ...

  2. LP线性规划求解 之 单纯形 算法

    LP线性规划求解 之 单纯形 算法 认识-单纯形 核心: 顶点旋转 随机找到一个初始的基本可行解 不断沿着可行域旋转(pivot) 重复2,直到结果不能改进为止 案例-过程 以上篇的case2的松弛型 ...

  3. .Net core3.0 集成swagger5.0上传文件

    .Net core 3.0已经更新了,相信有挺多博主大佬们都更新了如何在.Net core3.0使用swagger,这里就不详细说了. 我们知道,如果.net core 2.x使用swagger上传文 ...

  4. Prometheus学习笔记(3)什么是node_exporter???

    目录 Node_exporter安装配置启动 Node_exporter安装配置启动 node_exporter安装在被监控端,安装方式也比较简单,直接下载解压安装即可,默认启动后监听9100端口. ...

  5. 神舟笔记本Hasee安装Ubuntu Desktop和Gnome

    目录 1. 安装Ubuntu-desktop 2. 解决hasee T97 WiFi.声音输入输出.无法关机问题 3. 更新grub启动引导 4. 安装缺失的驱动(否则4.15内核无法进入桌面) 5. ...

  6. kuangbin专题专题四 MPI Maelstrom POJ - 1502

    题目链接:https://vjudge.net/problem/POJ-1502 dijkstra板子题,题目提供下三角情况,不包含正对角线,因为有题意都为0,处理好输入,就是一个很水的题. #inc ...

  7. Codeforces A. Password(KMP的nxt跳转表)

    题目描述: Password time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  8. 用于Python扩展包的非官方Windows二进制文件

    https://www.lfd.uci.edu/~gohlke/pythonlibs/ Index by date: peewee aiohttp indexed_gzip pygit2 pymatg ...

  9. 《剑指Offer》-004 -Java版二叉树先序和中序遍历返回原二叉树

    如题 (总结要点) 注意空值 假定数据是没有问题的 前序(根左右) ,中序(左根右), 故每次的第一个节点就是根节点 没用数组的库函数,自己手写了两个方法 用Java代码写二叉树很舒服, 没有啥指针, ...

  10. Linux-导入已安装的Linux系统

    之前在安装过一个Linux系统,由于重装电脑需要将之前安装的系统重新移动到VMWare中,让Linux系统能够重新运行起来,这样也省去了每次重新安装系统的麻烦. 废话不多说,咱们直接看是如何做? 1) ...