1.基本输出
行末分号无所谓,编译器会自动添加
go语言注释
//
/* */
package main
//创建包
//main包必须 有且只有一个
import (
"fmt"
)
//导入包类似C的头文件
//导入的包 必须有代码用到 否则会报错
func main() {
v:="qwe"
fmt.Println(v[0:1])
//输出自动换行
}
2.变量声明
当一个变量被声明之后,系统自动赋予它该类型的零值:int 为 0,float 为 0.0,bool 为 false,string 为空字符串,指针为 nil 等
批量格式
var a int
var (
b string
)
简短格式
这种方法,只要至少有一个新声明的变量出现在左值中,即便其他变量名可能是重复声明的,编译器也不会报错
x,y:=1,"abc"
//定义变量,同时显式初始化
//不能提供数据类型
//只能用在函数内部
多变量同时赋值
package main
import "fmt"
func main (){
var a int = 100
var b int = 200
b, a = a, b
fmt.Println(a, b)
}
//200 100
匿名变量_
不能用来运算,不能在后续代码使用
package main
import "fmt"
func hhh() (int, int) {
return 1, 2
}
func main(){
a, _ := hhh()
_, b := hhh()
fmt.Println(a,b)
}
//1 2
浮点数声明的时候,可以只写整数部分或者小数部分
const e = .12345 // 0.12345
const f = 6. // 6
fmt.Printf("%.2f\n", e) //控制保留几位小数
复数
复数的类型有两种,分别是 complex128(64 位实数和虚数)和 complex64(32 位实数和虚数),其中 complex128 为复数的默认类型
real实部,imag虚部
var x complex128 = complex(1, 2) // 1+2i
var y complex128 = complex(3, 4) // 3+4i
fmt.Println(x*y) //(-5+10i)
fmt.Println(real(x*y)) //-5
fmt.Println(imag(x*y)) //10
不允许将整型强制转换为布尔型
var n bool
fmt.Println(int(n) * 2)
//编译错误
字符串
a:="qwe"+
"asd" //加号后换行,否则编译器自动加分号
fmt.Println(a) //qweasd
a:=`qwe
asd
zxc` // `是左上角1左面的符号,可以定义多行字符串
fmt.Println(a)
/*
qwe
asd
zxc
*/
数据类型转换
a := 5.0
b := int(a)
const
const b string = "abc"
const b = "abc"
3.关键字
关键字一共有25个
break | default | func | interface | select |
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
4.标识符
第一个必须字母
26个英文字母
0~9
_
5.数组
var a [3]int
//数组的长度是数组类型的一个组成部分
//因此 [3]int 和 [4]int 是两种不同的数组类型
//数组类型相同,可以用==和!=来判断两个数组是否相等
fmt.Println(a[0])
fmt.Println(a[len(a)-1]) //len长度
var q [3]int = [3]int{1, 2, 3}
var r [3]int = [3]int{1, 2}
q := [...]int{1, 2, 3}
//省略号的话,根据初始值个数
var a = [3]int{1, 2, 3}
fmt.Println(a, a[1:2])
//[1 2 3] [2]
6. 循环
if condition {
// do something
} else {
// do something
}
//if和else之后的 左括号和关键字在一行。
//如果有else if,右括号和else if在一行。
mp:=map[int]string{
1:"a",
2:"b",
3:"c",
}
for key,value := range mp{
fmt.Println(key,value)
}
//map无序
//2 b
//3 c
//1 a
7.函数
func fuck(x,y int)(int){
return x+y
}
func main(){
var a,b int
a=1
b=2
fmt.Println(fuck(a,b))
}
//3