Go语言
Posted xuesu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go语言相关的知识,希望对你有一定的参考价值。
1. 基本组成
组成元素: 关键字,标识符,常量,字符串,符号
关键字列表:
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
预定义标识符
append;bool;byte;cap;close;complex;complex64;complex128;uint8;uint16;uint32;uint64;uintptr;uint;int8;int16;int32;int64;int;imag;false;true;copy;float32;float64;iota;len;make;new;nil;panic;print;println;real;recover;string;true;
包声明 package main
引用 import "fmt"
函数
func main(){//注意{不能单独放在一行
fmt.Println("")//单独语句后面不用加分号,多个语句同一行需要加分号
}
(程序入口点 init函数->main函数)
注释 c++风格
变量命名规则: 大写字母开头对包外可见,小写字母对包外不可见
变量声明: var age int = 0;
3. 运行或构建
go build
go run XX.go
go install XX.go
4. 语言类型
基本类型 bool, int/float/complex/uint, string
特别数字类型: byte, rune(~int32), uintptr(无符号整型,用于存放一个指针)
派生类型
a. 指针 pointer
b. 数组
c. struct
d. channel
e. 函数
f. 切片
g. interface
h. Map类型
5. 变量
a. 变量声明
i. 指定变量类型 var identifier type
ii. 根据值自行判断 var v_name = value
iii. 省略var: v_name := value, 只能在函数体中出现
注意:
var s string
s:="hello world"
错误
而
var s string
s, s1 := "hello" ,"world"
正确
这说明:= 左侧只需要存在新变量即可
iv. var (
a int
b bool
)
一般用于声明全局变量
package main
import "fmt"
var (
a int
)
func main(){
a := "123"
fmt.Println(a)
}
如果声明一个局部变量却没有使用,会得到编译错误!
b. 值类型,引用类型
基本类型属于值类型
引用类型: &i
c. _ 与python类似
6. 常量
const identifier [type] = value
例如 const b = "abc"
const b string = "abc"
const a, b = 1, 2
常量用作枚举:
const {
Unknown = 0
F = 1
M = 2
}
len(), cap(), unsafe, Sizeof()等内置函数只用常量作参数时得到的结果可以用来给常量赋值
iota在遇到const后自动赋值0,随后const体内每一行常量声明都使iota增加1
package main
import "unsafe"
const (
z = iota
a = "a"
b = len(a)
c = unsafe.Sizeof(a)
d
e = iota
f
g = 1<<iota
)
func main(){
println(z,a,b,c,d,e,f, g)//0 a 1 16 16 5 6 128
}
7 运算符
a. 算数运算符 +-*/%++--
b. 关系运算符 == != > < >= <=
c. 逻辑运算符 && || !
d. 位运算符 & | ^ << >>
e. 赋值运算符 = += -= *= /= %= <<= >>= &= ^= |=
f. &a 返回地址 *a 指针
var p *int
a := 4
p = &a
运算符优先级
^!
* / % << >> & &
+ - | ^
== != < <= >= >
&&
||
8. 条件语句
a. if 布尔表达式 {
XXX
}else{
}
注意: int类型不能直接当表达式内容
b. switch var1 {
case 1:
....
default:
...
}
或者
switch {
case 条件1:
....
default:
...
}
注意 case自带break,要继续执行,需要用fallthrough
switch len(a){
case 1:
switch{
case g > 128:
println(128)
case g > 64:
println(64)
default:
println(g)
}
default:
println("default A")
}
Type Switch
switch x.(type){
case typeA:
...}
c. select语句-用于通信的switch语句,每个case必须是一个通信操作,发送或者接受。select随机执行一个可以运行的case,如果没有case可运行则将阻塞
以上是关于Go语言的主要内容,如果未能解决你的问题,请参考以下文章