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

最新文章

  1. Android Ormlite 学习笔记2 -- 主外键关系
  2. java多线程学习
  3. centos 开启VNC
  4. 第一次点击Div1显示Div2,再次点击Div1的时候又隐藏Div2
  5. java基础知识回顾之javaIO类---FileInputStream和FileOutputStream字节流复制图片
  6. 在Silverlight中打开网页的几种方法
  7. STARTUP.A51详解
  8. 写好Java代码的30条经验总结(转)
  9. nodejs----微信注册测试号获取token
  10. HashMap源码解析(简单易懂)
  11. 【转】mysql8.0 在window环境下的部署与配置
  12. java 二维数组的行列长度
  13. Linux常用文本操作命令整理
  14. CD0J/POJ 851/3126 方老师与素数/Prime Path BFS
  15. 两步实现在Git Bash中用Sublime打开文件
  16. 第10章 Pry, 强大的pry-rails和相关的几个好用gem
  17. 【linux】ulimit限制打开的文件数量
  18. springboot成神之——发送邮件
  19. IIS中X509Certificate遇见的问题
  20. English Phrases

热门文章

  1. 05-Vue组件
  2. OSPF 多区域配置
  3. windows+jenkins+springboot自动构建并后台执行jar
  4. Django 之 ContentType组件
  5. JS 基本操作
  6. CentOS6.7搭建部署DHCP服务 (详解主配置文件)
  7. centos 6.5 忘记用户名和密码
  8. 没有rc.local的解决办法
  9. c#每天生成漂亮桌面背景、英文名言、翻译
  10. Spring Boot 配置文件密码加密两种方案