用户工具

站点工具


go:lang
  • 基本类型

数值类型 说明
bool 布尔
string 字符
int,int8,int16,int32,int64 int长度与平台相关
uint,uint8,uint16,uint32,uint64 uint长度与平台相关
uintptr 同指针,32位平台为4字节,64位八字节
byte 等价于uint8
rune 等价于uint32,单个unicode字符
float32,float64 浮点数
complex64,complex128 复数类型, value = 3.2+12i
error 错误

  • 命名
    • 内建常量:true false iota nil
    • 内建函数:make len cap new append copy close delete complex real imag panic recover
    • 类型声明:var变量 const常量 type结构 func函数
  • 变量定义:大写字母开头的变量或函数是public,小写的则是private,强制规则使代码更简洁
const a int = 1 //显式定义  const a = 1  //隐式定义
const a, b, c = 1, false, "str" //多重赋值
var ptr *int; ptr = &a   //整型指针,&取址符,ptr == nil,空指针判断
s := "hehe"  //声明并赋值,不能重复定义,strconv.Atoi(s),ParseInt(s,10,0)
_ = "string"  //下划线表示空对象,通常不关心error返回值时使用,rand.Intn(len(x))
m := map[string]int {"one": 1, "two": 2} // for k, v := range m { fmt.Println("Key =", k, ", Value =", v) }
关键字:chan select range panic recover make type struct defer error
  • 流程控制
if i>0 {  //if语句的条件不需要小括号
if i:=4;i>0{  //if语句可以初始化变量
switch i { case 0: //switch不需要break跳出case
select { case communication clause: //专用于通讯,每个case要么发送要么接收,随机执行case或阻塞
for i := 0; i < 10; i++ { //for { 无线循环,通过break、return退出,通常遍历range范围 }
for idx,value := range items { //strings.Repeat(str,10) }
goto label  //label: statement,支持break、continue
  • 函数
func 方法名称([传入参数表]) [返回结果数据类型]{ 函数体 } //参数可选,返回结果可选
func swap(x, y string) (string, string) { return y,x }  //返回多个结果
getSquare := func(x float64) float64 { return x*x }  //fmt.Println(getSquare(3)) 函数变量
func getSequence() func() int { i:=0; return func() int { i+=1; return i } } //闭包,返回结果是函数
type Circle struct { radius float64 }  //定义结构体
func (c Circle) getArea() float64 { return 3.14 * c.radius * c.radius } //方法属于某个类型或结构
程序运行入口为main,包名取最后一级目录名;首字母大写的属性或方法被导出,其他代码import之后即可调用
import "math"  //包名
import ( "fmt" )  //多包导入,每个包换行
go/lang.txt · 最后更改: 2021/11/16 16:41 由 admin