准备:
一些文档:
语言特点:
- 高性能,高并发
- 跨平台
- 完善的标准库
- 快速编译
- 垃圾回收
开发环境
- 安装go语言
- 配置环境变量
- 集成开发环境:使用IDEA
Good to go:
Hello World!
hello包
package hello
import "fmt"
/**
* 首字母大写,可以被包外访问(小写)
* 首字母小写,外界无法访问
*/
func SayHello() {
fmt.Println("Hello, World!")
}
main包
package main
//批量导使用()
import (
"hello"
//还可以给包起别名
h "hello"
)
func main() {
hello.SayHello()
h.SayHello()
}
基本语法
1. 常量
常量在声明时就必须初始化一个值,并且常量的类型可以省略
func Constant {
const msg string = "hello world"
const HTTPStatusOK = 200
}
只声明不赋值,就无法通过编译
const name string //error:常量声明中缺少值
2. 变量
- 声明和赋值
func Variables() {
var a string = "test"
//声明多个相同类型的变量可以只声明一次
var b, c int = 1, 2
//只声明不赋值,则默认存储对应类型的零值
var char byte
/*
以上写法等同于
var(
a string = "test"
b, c int = 1, 2
char byte
)
*/
//短变量
d := "声明并赋值,并自动识别类型"
//批量初始化
name, age := "jack", 1
//不能使用nil
//name := nil // 无法通过编译
fmt.Println(a, b, c, d, char)
//输出:test 1 2 声明并赋值,并自动识别类型 0
}
- 交换变量
func Exchange() {
num1, num2, num3 := 25, 36, 114
num1, num2, num3 = num3, num2, num1
fmt.Println(num1, num2, num3)
//输出:114 36 25
}
- 作用域
变量的作用域为函数内部时,创建新变量后未调用,就无法通过编译
package main
func main() {
var name string
var age int
name, age = "丁真", 1
}
当变量的作用域为整个包时,就允许该变量未被使用
package main
var name string
var age int
func main() {
name, age = "丁真", 1
}