go基础(一)

第二章程序结构

2.1名称

  • 在Go中首字母大写表示导出,意味着对包外可见和可访问
  • Go的命名风格是驼峰式

2.2声明

Go中主要有4个声明:

  • 变量(var)
  • 常量(const)
  • 类型(type)
  • 函数(func)

Go程序的组织是存储在一个以.go为后缀的文件里。每一个文件以package声明开头,表明文件属于哪个包。后面跟着import,

然后是包级别的类型、变量、常量、函数的声明

2.3变量

var声明方式

var name type = expression

var i , j , k int

var b ,f ,s = true , 2.3 , "four"

var f , err = os.Open(name)

要注意type和expression可以省略一个

Go中零值机制保证不存在未初始化变量

在局部函数中可以使用短变量声明

p := new(int) //返回一个指向int的指针

变量逃逸

var global *int
func f(){
    var x int
    x = 1
    global = &x    //x一定是分配堆区 变量逃逸
}

2.4 赋值

  • 多重赋值
//计算两个整数的最大公约数
func gcd(x, y int) int{
    for y != 0{
        x , y = y , x % y
    }
    return x
}

2.5 类型声明

type Celsiud float64

2.6 包和文件

  • switch里面每一个cach都是一个作用域

  • 开启gomudule后在任意一个目录下新建项目,导入该项目的其他包时都是以项目名开头

  • 但是如果在gopath目录下则是src后面的目录开头

第三章基本数据

数据类型分为四大类:

  • 基本类型 包括数字、string、bool
  • 聚合类型 数组 、 struct
  • 引用类型 指针 、 slice 、 map 、 函数 、 通道 channel
  • 接口类型

3.1整数

  • Go语言中取模运算符%的取模余数的正负号总是与被除数一致,例如-5%3和-5%-3都得-2

  • &^是位清空运算符

  • 表达式 z = x &^ y 中,若y的某位是1,则z的对应位等于0;否则,它就等于x的对应位

3.2浮点数

var z float64
fmt.Println(z , -a , 1/z , -1/z , z/z) // "0 -0 +Inf -Inf NaN"

nan := math.NaN()

3.3复数

	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

3.4布尔值

布尔值可以由运算符&&(AND)以及||(OR) 组合运算,但是会有短路行为

布尔值无法隐式转换成数值0或1

3.5字符串

  • 字符串不可改变,内部的数据不允许修改。s[0] = ‘a’ 这样的操作编译错误
func intsToString(values []int) string {
	var buf bytes.Buffer
	buf.WriteByte('[')
	for i, v := range values {
		if i > 0 {
			buf.WriteString(", ")
		}
		fmt.Fprintf(&buf, "%d", v)
	}
	buf.WriteByte(']')
	return buf.String()
}

func main() {
	fmt.Println(intsToString([]int{1, 2, 3})) // "[1, 2, 3]"
}

字符串和数字的进制转化

strconv
fmt.Sprintf

3.6 常量

变量声明中,假如没有显式指定类型,无类型常量会隐式转换成该变量的默认类型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值