测试安装成功go version
, 查看当前安装的版本
(base) ➜ Golang go version
go version go1.15.6 darwin/amd64
vi hello.go
创建一个后缀为go的文件, 内容如下
package main //包名
import "fmt" // go常见的一个包,实现了格式化IO, 输入和输出函数
func main() { // {不能换行
fmt.Println("hello, world!") //打印一条hello world!
}
注意:
第一行指明这个文件属于哪个包
/*...*/ 和 //
一个大写字母开头
可以被外部代码所用, 如果是小写是对外不可见,但是内部可用。{ 不能单独放在一行
运行go run hello.go
hello, world!
编译成二进制文件go build hello.go
标识符
: 和python类似。用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母(AZ和az)数字(0~9)、下划线_组成的序列,但是第一个字符必须是字母或下划线而不能是数字
。
声明的用法是var variable type
.
var zero_1 int
, 这里的zero_1就是0var string_1 = "this is string"
, 这里的string_1就是string类型新的变量
,就产生编译错误,格式:v_name := value
多个变量声明和单个类似。一般用于声明全局变量
var (
a int
b bool
)
交互值: a, b = b, a,两个变量的类型必须是相同。
空白标识符 _ 也被用于抛弃值
,如值 5 在:_, b = 5, 7 中被抛弃。
常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。定义格式const identifier [type] = value
显式
类型定义: const b string = "abc"隐式
类型定义: const b = "abc"常量可以用len(), cap(), unsafe.Sizeof()
函数计算表达式的值。
iota
,特殊常量,可以认为是一个可以被编译器修改的常量。
const (
a = iota
b //1
c //2
)
运算符用于在程序运行时执行数学或逻辑运算。
随机执行
一个可运行的case。注意:Go 没有三目运算符,所以不支持 ?: 形式的条件判断。
for 循环
Go 语言最少有个 main()
函数。函数声明告诉了编译器函数的名称,返回类型,和参数。
如何定义
func function_name( [parameter list] ) [return_types] {
函数体
}
调用方式和Python的一致。
数组如何定义和声明,var variable_name [SIZE] variable_type
。初始化一个数组,var list_1 = [4]int{1,23,4,5}
有不指定大小来初始化一个list,var list_1 = [...]int{1,23,4,5}
Go 语言中使用指针可以更简单的执行一些任务
。变量是一种使用方便的占位符,用于引用计算机内存地址.
声明方式var var_name *var-type
,在指针类型前面加上 * 号(前缀)来获取指针所指向的内容
。
package main
import "fmt"
func main() {
var a int = 10 //声明实际变量
var ip *int // 声明指针变量
ip = &a // 指针变量的存储地址
fmt.Println(&a)
fmt.Println(ip)
fmt.Println(*ip) // 用指针访问值
}
如何定义个结构体,
type struct_variable_type struct {
member definition
member definition
...
member definition
}
一旦定义了结构体类型,它就能用于变量的声明,语法格式如下:
variable_name := structure_variable_type {value1, value2...valuen}
或
variable_name := structure_variable_type { key1: value1, key2: value2..., keyn: valuen}
比如下面的列子
package main
import "fmt"
func main() {
type books struct {
title string
author string
price float32
id int
}
fmt.Println(books{"title", "author", 12.22, 1})
fmt.Println(books{title: "书名", price:12.44})
}